コード例 #1
0
        private const int OpenLoadScript = (int)CefSharp.CefMenuCommand.UserFirst + 6; //加载脚本

        public void OnBeforeContextMenu(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model)
        {
            if (BeforeContextMenu != null)
            {
                BeforeContextMenu(this, new BeforeContextMenuEvenArgs(parameters, model));
            }
            model.AddSeparator();
            if (parameters.MediaType == CefSharp.ContextMenuMediaType.Image)
            {
                model.AddItem((CefSharp.CefMenuCommand)CopyImage, "复制图片(&I)");
            }
            if ((CefSharp.ContextMenuType)(parameters.TypeFlags & CefSharp.ContextMenuType.Link) == CefSharp.ContextMenuType.Link)
            {
                if (!string.IsNullOrWhiteSpace(parameters.LinkUrl) && !parameters.LinkUrl.StartsWith("about:black"))
                {
                    model.AddItem((CefSharp.CefMenuCommand)OpenLink, "打开链接(&L)");

                    model.AddItem((CefSharp.CefMenuCommand)OpenLinkSource, "打开链接源码(&S)");

                    model.AddItem((CefSharp.CefMenuCommand)CopyLink, "复制链接(&C)");
                }
            }
            model.AddItem((CefSharp.CefMenuCommand)OpenDevTool, "开发者工具 F12");
            model.AddItem((CefSharp.CefMenuCommand)OpenLoadScript, "加载脚本 F6");
        }
コード例 #2
0
        public bool OnContextMenuCommand(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.CefMenuCommand commandId, CefSharp.CefEventFlags eventFlags)
        {
            switch (commandId)
            {
            case CefSharp.CefMenuCommand.ViewSource:
                if (ViewSource != null)
                {
                    ViewSource(this, new EventArgs());
                }
                return(true);

            case (CefSharp.CefMenuCommand)OpenLink:
            case (CefSharp.CefMenuCommand)OpenLinkSource:
            {
                if (OpenLinkOrSource != null)
                {
                    OpenLinkOrSource(this, new OpenLinkOrSourceArgs(parameters.LinkUrl, commandId == (CefSharp.CefMenuCommand)OpenLinkSource));
                }
            }
                return(true);

            case (CefSharp.CefMenuCommand)CopyImage:
            {
                if (CopyImageToClipboard != null)
                {
                    CopyImageToClipboard(this, new CopyImageEventArgs(parameters.SourceUrl));
                }
            }
                return(true);

            case (CefSharp.CefMenuCommand)OpenDevTool:
            {
                if (ShowDevTool != null)
                {
                    ShowDevTool(this, new EventArgs());
                }
            }
                return(true);

            case (CefSharp.CefMenuCommand)CopyLink:
            {
                Clipboard.SetText(parameters.LinkUrl);
            }
                return(true);

            case (CefSharp.CefMenuCommand)OpenLoadScript:
            {
                if (LoadScript != null)
                {
                    LoadScript(this, new EventArgs());
                }
            }
                return(true);

            default:
                break;
            }
            return(false);
        }
コード例 #3
0
 public CefSharp.IResourceRequestHandler GetResourceRequestHandler(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
 {
     if (request.ResourceType == CefSharp.ResourceType.Image)
     {
         return(new CefResourceRequestHandler());
     }
     return(null);
 }
コード例 #4
0
 public override IResponseFilter GetResourceResponseFilter(CefSharp.IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response)
 {
     if (frame.IsMain && request.ResourceType == ResourceType.MainFrame)
     {
         return(new JavascriptInjectionFilter(script));
     }
     return(null);
 }
コード例 #5
0
 public bool DoClose(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser)
 {
     if (browser.IsDisposed || browser.IsPopup)
     {
         return(false);
     }
     return(true);
 }
コード例 #6
0
 public bool OnPreKeyEvent(CefSharp.IWebBrowser browserControl, CefSharp.KeyType type, int windowsKeyCode, int nativeKeyCode,
                           CefSharp.CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
 {
     if (windowsKeyCode == (int)Keys.F12)
     {
         Program.Form.ChromiumBrowser.ShowDevTools();
     }
     return(false);
 }
コード例 #7
0
 public NewWindowEventArgs(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, CefSharp.IFrame frame, string targetUrl, string targetFrameName, CefSharp.WindowOpenDisposition targetDisposition, CefSharp.IWindowInfo windowInfo)
 {
     this.chromiumWebBrowser = chromiumWebBrowser;
     this.browser            = browser;
     this.frame             = frame;
     this.targetUrl         = targetUrl;
     this.targetFrameName   = targetFrameName;
     this.targetDisposition = targetDisposition;
     this.windowInfo        = windowInfo;
 }
コード例 #8
0
 public bool OnJSDialog(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, string originUrl, CefSharp.CefJsDialogType dialogType, string messageText, string defaultPromptText, CefSharp.IJsDialogCallback callback, ref bool suppressMessage)
 {
     if (JsDialog != null)
     {
         var args = new JsDialogEventArgs(dialogType, messageText, defaultPromptText, callback, suppressMessage);
         JsDialog(this, args);
         suppressMessage = args.suppressMessage;
         return(args.result);
     }
     return(false);
 }
コード例 #9
0
        public bool OnBeforePopup(CefSharp.IWebBrowser browser, string url, ref int x, ref int y, ref int width, ref int height)
        {
            var uri = new Uri(url);

            if (uri.Scheme != "chrome-devtools")
            {
                var args = new WebViewNewWindowEventArgs(uri, null);
                Widget.OnOpenNewWindow(args);
                return(args.Cancel);
            }
            return(false);
        }
コード例 #10
0
 public void OnDownloadUpdated(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, CefSharp.DownloadItem downloadItem, CefSharp.IDownloadItemCallback callback)
 {
     if (downloadItem.IsCancelled || downloadItem.IsComplete || !downloadItem.IsInProgress || !downloadItem.IsValid)
     {
         Console.WriteLine("OnDownloadUpdated downloadItem.Id=" + downloadItem.Id + ",downloadItem.OriginalUrl=" + downloadItem.OriginalUrl);
         DownloadManager.Update(downloadItem);
         DownloadManager.Remove(downloadItem.Id);
     }
     else
     {
         lastDownloadItem = downloadItem;
     }
 }
コード例 #11
0
        protected override bool DoBeforeBrowse(CefSharp.IWebBrowser browser, CefSharp.IRequest request, CefSharp.NavigationType naigationvType, bool isRedirect)
        {
            Uri uri = new Uri(request.Url);

            if (!uri.Host.EndsWith("euronews.com"))
            {
                return(true);                                    // true == cancel
            }
            else
            {
                return(base.DoBeforeBrowse(browser, request, naigationvType, isRedirect));
            }
        }
コード例 #12
0
ファイル: MenuHandler.cs プロジェクト: radtek/aria2gui
        void CefSharp.IContextMenuHandler.OnBeforeContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model)
        {
            var flag = parameters.TypeFlags;

            if ((flag & CefSharp.ContextMenuType.Editable) == CefSharp.ContextMenuType.Editable)
            {
            }
            else if ((flag & CefSharp.ContextMenuType.Selection) == CefSharp.ContextMenuType.Selection)
            {
            }
            else
            {
                //model.Clear();
            }
        }
コード例 #13
0
        bool CefSharp.IRequestHandler.OnBeforeBrowse(CefSharp.IWebBrowser browser, CefSharp.IRequest request, CefSharp.NavigationType navigationType, bool isRedirect)
        {
            var uri = new Uri(request.Url);

            if (uri.Scheme != "chrome-devtools")
            {
                // hack since we can't tell if we're loading from an iframe or a new page. grr.
                if (uri.IsFile || navigationType != CefSharp.NavigationType.Other)
                {
                    var args = new WebViewLoadingEventArgs(uri, true);
                    Widget.OnDocumentLoading(args);
                    return(args.Cancel);
                }
            }
            return(false);
        }
コード例 #14
0
        public bool OnBeforePopup(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, CefSharp.IFrame frame, string targetUrl, string targetFrameName, CefSharp.WindowOpenDisposition targetDisposition, bool userGesture, CefSharp.IPopupFeatures popupFeatures, CefSharp.IWindowInfo windowInfo, CefSharp.IBrowserSettings browserSettings, ref bool noJavascriptAccess, out CefSharp.IWebBrowser newBrowser)
        {
            newBrowser = null;
            if (BeforePopupEvent == null)
            {
                return(false);
            }
            NewWindowEventArgs e = new NewWindowEventArgs(chromiumWebBrowser, browser, frame, targetUrl, targetFrameName, targetDisposition, windowInfo);

            BeforePopupEvent(this, e);
            if (e.newBrowser == null)
            {
                return(false);
            }
            //newBrowser = e.newBrowser;
            return(true);
        }
コード例 #15
0
 public void OnBeforeDownload(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, CefSharp.DownloadItem downloadItem, CefSharp.IBeforeDownloadCallback callback)
 {
     if (!callback.IsDisposed)
     {
         using (callback)
         {
             var find = DownloadManager.Find(downloadItem.OriginalUrl);
             if (find != null)
             {
                 find.Id = downloadItem.Id;
                 Console.WriteLine("OnBeforeDownload downloadItem.Id=" + downloadItem.Id + ",downloadItem.OriginalUrl=" + downloadItem.OriginalUrl);
                 find.downloadItem = downloadItem;
                 callback.Continue(find.localPathFile, false);
             }
         }
     }
 }
コード例 #16
0
 public void OnAfterCreated(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser)
 {
     //throw new NotImplementedException();
 }
コード例 #17
0
ファイル: MenuHandler.cs プロジェクト: radtek/aria2gui
 void CefSharp.IContextMenuHandler.OnContextMenuDismissed(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame)
 {
 }
コード例 #18
0
ファイル: MenuHandler.cs プロジェクト: radtek/aria2gui
 bool CefSharp.IContextMenuHandler.OnContextMenuCommand(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.CefMenuCommand commandId, CefSharp.CefEventFlags eventFlags)
 {
     return(false);
 }
コード例 #19
0
 public bool OnKeyEvent(CefSharp.IWebBrowser browserControl, CefSharp.KeyType type, int windowsKeyCode, CefSharp.CefEventFlags modifiers, bool isSystemKey)
 {
     return(false);
 }
コード例 #20
0
 public bool OnBeforeUnloadDialog(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, string messageText, bool isReload, CefSharp.IJsDialogCallback callback)
 {
     return(true);
 }
コード例 #21
0
 public void OnResetDialogState(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser)
 {
 }
コード例 #22
0
 void CefSharp.IContextMenuHandler.OnContextMenuDismissed(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame)
 {
     //throw new NotImplementedException();
 }
コード例 #23
0
 void CefSharp.IContextMenuHandler.OnBeforeContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model)
 {
     model.Clear();
 }
コード例 #24
0
 bool CefSharp.IRequestHandler.OnBeforeResourceLoad(CefSharp.IWebBrowser browser, CefSharp.IRequestResponse requestResponse)
 {
     return(false);
 }
コード例 #25
0
 protected override bool OnResourceResponse(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IRequest request, CefSharp.IResponse response)
 {
     return(base.OnResourceResponse(chromiumWebBrowser, browser, frame, request, response));
 }
コード例 #26
0
 void CefSharp.IRequestHandler.OnResourceResponse(CefSharp.IWebBrowser browser, string url, int status, string statusText, string mimeType, System.Net.WebHeaderCollection headers)
 {
 }
コード例 #27
0
 bool CefSharp.IContextMenuHandler.OnContextMenuCommand(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.CefMenuCommand commandId, CefSharp.CefEventFlags eventFlags)
 {
     //throw new NotImplementedException();
     return(false);
 }
コード例 #28
0
 public void OnBeforeClose(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser)
 {
     //throw new NotImplementedException();
 }
コード例 #29
0
 bool CefSharp.IContextMenuHandler.RunContextMenu(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser, CefSharp.IFrame frame, CefSharp.IContextMenuParams parameters, CefSharp.IMenuModel model, CefSharp.IRunContextMenuCallback callback)
 {
     return(false);
 }
コード例 #30
0
 public void OnDialogClosed(CefSharp.IWebBrowser chromiumWebBrowser, CefSharp.IBrowser browser)
 {
 }