CefSharp 在同一窗口打开链接的方法

栏目: ASP.NET · 发布时间: 8年前

内容简介:CefSharp 在同一窗口打开链接的方法

摘要

在winform中使用cefsharp的时候,我们在浏览网页的时候,想在同一个窗口打开链接,而不是创建新的窗口。可以通过下面的方法实现。

解决方案

CefSharp 中控制弹窗的接口是 ILifeSpanHandler ,可以对 OnBeforePopup 进行重写,即可控制是否弹出新窗体。接口定义如下:

bool ILifeSpanHandler .OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)

要实现禁止弹出新窗体-在同一窗口打开,需要在原窗体加载目标Url,即参数targetUrl,并返回结果true,此时将会取消新窗口的创建,并在原窗口加载链接。具体实现方法体的代码如下:

   /// <summary>
    /// 在自己窗口打开链接
    /// </summary>
    internal class OpenPageSelf : ILifeSpanHandler
    {
        public bool DoClose(IWebBrowser browserControl, IBrowser browser)
        {
            return false;
        }

        public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
        {

        }

        public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
        {

        }

        public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, 
string targetFrameName, WindowOpenDisposition targetDisposition, bool userGesture, IPopupFeatures popupFeatures, 
IWindowInfo windowInfo, IBrowserSettings browserSettings, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
        {
            newBrowser = null;
            var chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
            chromiumWebBrowser.Load(targetUrl);
            return true; //Return true to cancel the popup creation copyright by codebye.com.
        }
    }

在实例化浏览器的时候,指定处理程序

        private void MainFrm_Load(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
            CefSharp.CefSettings settings = new CefSharp.CefSettings();

            CefSharp.Cef.Initialize(settings);
            CefSharp.WinForms.ChromiumWebBrowser webView = new CefSharp.WinForms.ChromiumWebBrowser("https://www.baidu.com");
            webView.Dock = DockStyle.Fill;
            webView.LifeSpanHandler = new OpenPageSelf();
            this.Controls.Add(webView);
        }

上面红色部分的代码,是应用我们实现的窗口的打开方式。

参考资料

http://www.codebye.com/cefsharp-open-in-same-browser.html


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

构建之法

构建之法

邹欣 / 人民邮电出版社 / 2014-9 / 49.00元

内容简介: 软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。作者邹欣有长达20年的一线软件开发经验,他利用业余时间在数所高校进行了长达6年的软件工程教学实践,总结出了在16周的时间内让 同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划,并得到高校师生的积极反馈......一起来看看 《构建之法》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具