11 changed files with 252 additions and 18 deletions
@ -0,0 +1,49 @@ |
|||||
|
using CefSharp; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
|
||||
|
namespace 齐越慧眼.cefhelper |
||||
|
{ |
||||
|
public class CefLifeSpanHandler : CefSharp.ILifeSpanHandler |
||||
|
{ |
||||
|
public CefLifeSpanHandler() |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
public bool DoClose(IWebBrowser browserControl, CefSharp.IBrowser browser) |
||||
|
{ |
||||
|
if (browser.IsDisposed || browser.IsPopup) |
||||
|
{ |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
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) |
||||
|
{ |
||||
|
var chromiumWebBrowser = (ExtChromiumBrowser)browserControl; |
||||
|
|
||||
|
chromiumWebBrowser.Dispatcher.Invoke(new Action(() => |
||||
|
{ |
||||
|
NewWindowEventArgs e = new NewWindowEventArgs(windowInfo, targetUrl); |
||||
|
chromiumWebBrowser.OnNewWindow(e); |
||||
|
})); |
||||
|
|
||||
|
newBrowser = null; |
||||
|
return true; |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,50 @@ |
|||||
|
using CefSharp; |
||||
|
using CefSharp.Wpf; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
|
||||
|
namespace 齐越慧眼.cefhelper |
||||
|
{ |
||||
|
public class ExtChromiumBrowser : ChromiumWebBrowser |
||||
|
{ |
||||
|
public ExtChromiumBrowser() |
||||
|
: base(null) |
||||
|
{ |
||||
|
this.LifeSpanHandler = new CefLifeSpanHandler(); |
||||
|
//this.DownloadHandler = new DownloadHandler(this);
|
||||
|
} |
||||
|
|
||||
|
public ExtChromiumBrowser(string url) : base(url) |
||||
|
{ |
||||
|
this.LifeSpanHandler = new CefLifeSpanHandler(); |
||||
|
} |
||||
|
|
||||
|
public event EventHandler<NewWindowEventArgs> StartNewWindow; |
||||
|
|
||||
|
public void OnNewWindow(NewWindowEventArgs e) |
||||
|
{ |
||||
|
if (StartNewWindow != null) |
||||
|
{ |
||||
|
StartNewWindow(this, e); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public class NewWindowEventArgs : EventArgs |
||||
|
{ |
||||
|
private IWindowInfo _windowInfo; |
||||
|
public IWindowInfo WindowInfo |
||||
|
{ |
||||
|
get { return _windowInfo; } |
||||
|
set { value = _windowInfo; } |
||||
|
} |
||||
|
public string Url { get; set; } |
||||
|
|
||||
|
public NewWindowEventArgs(IWindowInfo windowInfo, string url) |
||||
|
{ |
||||
|
_windowInfo = windowInfo; |
||||
|
this.Url = url; |
||||
|
} |
||||
|
} |
||||
|
} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue