Files

83 lines
2.6 KiB
C#

using CefSharp;
using CefSharp.WinForms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Work._29Tools.CefTools
{
public enum PopWindowType
{
NewWindow,
SelfWindow,
NewTitleWindow,
}
public class PopData
{
public string Url { get; set; }
}
public class LocalLifeSpanHandler : ILifeSpanHandler
{
private PopWindowType popWindowType = PopWindowType.NewWindow;
public event EventHandler<PopData> OnPop;
public ChromiumWebBrowser parent;
public LocalLifeSpanHandler()
{
}
public LocalLifeSpanHandler(PopWindowType _popWindowType)
{
popWindowType = _popWindowType;
}
public bool DoClose(IWebBrowser browserControl, IBrowser browser)
{
return false;
}
public void OnAfterCreated(IWebBrowser chromiumWebBrowser, IBrowser browser)
{
if (!browser.IsDisposed && browser.IsPopup)
{
//GlobalFormConfig.MainFormInstance.InvokeOnUiThreadIfRequired(() =>
//{
// // 修改窗体左上角的图标
// IntPtr handle = browser.GetHost().GetWindowHandle();
// PInvokeHelper.SendMessage(handle, 0x80, IntPtr.Zero, NaiBaGlobalConfig.SoftwareConfig.LogoIcon.Handle);
//});
}
}
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)
{
if (popWindowType == PopWindowType.NewWindow)
{
newBrowser = null;
return false;
}
else if (popWindowType == PopWindowType.NewTitleWindow && popupFeatures.IsPopup)
{
PopData p = new PopData() { Url = targetUrl };
if (OnPop != null)
OnPop(this, p);
newBrowser = null;
return true;
}
else
{
// 不打开新的 tab
browser.MainFrame.LoadUrl(targetUrl);
newBrowser = null;
return true;
}
}
}
}