Skip to content

BrowserEvent.cs示例代码:

using FBroSharp;
using FBroSharp.Const;
using FBroSharp.DataType;
using FBroSharp.Event;
using FBroSharp.Lib;
using FBroSharp.Value;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using FBroSharp.Callback;
using System.IO;

namespace BaseTest
{
    public class BrowserList
    {
        public static List<FBroSharpBrowser> data = new List<FBroSharpBrowser>();

    }

    public class BrowserEvent : FBroSharpBrowserEvent
    {
        //即将创建
        public override void OnAfterCreated(IFBroSharpBrowser browser, IFBroSharpDictionaryValue extrainfo)
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            if (!extrainfo.GetBool("是否为后台"))
            {
                BrowserList.data.Add((FBroSharpBrowser)browser);
                Console.WriteLine(MethodBase.GetCurrentMethod().Name + " 非后台浏览器创建");
            }
            else
                Console.WriteLine(MethodBase.GetCurrentMethod().Name + " 后台浏览器创建");

        }

        //即将关闭
        public override void OnBeforeClose(IFBroSharpBrowser browser)
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().Name);

            for (int i = 0; i < BrowserList.data.Count; i++)
            {
                var temp_browwser = BrowserList.data[i];
                if (temp_browwser.IsSame(browser)){
;                    //BrowserList.data.Remove(temp_browwser);
                    BrowserList.data.RemoveAt(i);
                    break;
                }
            }
        }
        public override bool DoClose(IFBroSharpBrowser browser)
        {
            return false;
        }
        //即将下载
        public override void OnBeforeDownload(IFBroSharpBrowser browser, IFBroSharpDownloadItem download_item, string suggested_name, IFBroSharpBeforeDownloadCallback callback)
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().Name, suggested_name);
            callback.Continue(Directory.GetCurrentDirectory() + "\\" + suggested_name, false);
        }

        //下载中
        public override void OnDownloadUpdated(IFBroSharpBrowser browser, IFBroSharpDownloadItem download_item, IFBroSharpDownloadItemCallback callback)
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().Name +
                " 开始时间:" + download_item.GetStartTime().ToString() +
                " 结束时间:" + download_item.GetEndTime().ToString() +
                " 进度:" + download_item.GetPercentComplete() +
                " 速度:" + download_item.GetCurrentSpeed());
        }


        //即将打开菜单
        public override void OnBeforeContextMenu(IFBroSharpBrowser browser, IFBroSharpFrame frame, IFBroSharpContextMenuParams menu_params, IFBroSharpMenuModel model)
        {
            //添加分隔栏
            model.AddSeparator();
            IFBroSharpMenuModel sub_model = model.AddSubMenu(10000, "自定义菜单");

            sub_model.AddItem(10001, "检查");
            sub_model.AddItem(10002, "开发者工具");

        }

        //即将执行菜单命令
        public override bool OnContextMenuCommand(IFBroSharpBrowser browser, IFBroSharpFrame frame, IFBroSharpContextMenuParams menu_params, int command_id, FBroSharpEventFlags event_flags)
        {
            switch (command_id)
            {
                case 10001:
                    FBroSharpElementAt element_at = new FBroSharpElementAt
                    {
                        x = menu_params.GetXCoord(),
                        y = menu_params.GetYCoord()
                    };
                    browser.ShowDevTools("开发者工具", IntPtr.Zero, 0, 0, 1024, 900, default, element_at, default, default);
                    break;
                case 10002:
                    browser.ShowDevTools("开发者工具", IntPtr.Zero, 0, 0, 1024, 900, default, default, default, default);
                    break;
            }
            return false;
        }


        //即将加载资源
        public override FBroSharpReturnValueType OnBeforeResourceLoad(IFBroSharpBrowser browser, IFBroSharpFrame frame, IFBroSharpRequest request, IFBroSharpCallback callback)
        {
       
            return FBroSharpReturnValueType.RV_CONTINUE;
        }



        public override bool OnBeforePopup(IFBroSharpBrowser browser, IFBroSharpFrame frame, string target_url, string target_frame_name,
            FBroSharpWindowOpenDisposition target_disposition, bool user_gesture, FBroSharpPopupfeatures popupFeatures, ref FBroSharpWindowsInfo windowInfo,
            ref FBroSharpBrowserSetting settings, ref bool no_javascript_access, IFBroSharpUseExtraData user_settings)
        {
            Console.WriteLine(MethodBase.GetCurrentMethod().Name + " target_url:" + target_url + " target_frame_name:" + target_frame_name + " target_disposition:" + target_disposition + " user_gesture:" + user_gesture + " popupFeatures:" + popupFeatures + " windowInfo:" + windowInfo + " settings:" + settings + " no_javascript_access:" + no_javascript_access + " user_settings:" + user_settings);
            frame.LoadURL(target_url);
            return false;
        }

        //浏览器_请求证书错误
        public override bool OnCertificateError(IFBroSharpBrowser browser, int cert_error, string request_url, IFBroSharpSSLInfo ssl_info, IFBroSharpCallback callback)
        {
            //继续
            callback.Continue();
            //返回真跳转证书错误网站,返回假不跳转
            return true;
        }
    }



   

}

如果文档对您有帮助,欢迎 请喝咖啡 ☕ | 软件发布 | 源码购买