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