1 |
public class LifespanHandler: ILifeSpanHandler |
1 |
public event Action< string > popup_request; |
1 2 3 4 5 |
//get url popup this .popup_request?.Invoke(targetUrl); //stop open popup newBrowser = null ; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
using CefSharp; using CefSharp.WinForms; namespace popup_cefsharp { public class LifespanHandler: ILifeSpanHandler { //event that receive url popup public event Action< string > popup_request; 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) { //get url popup this .popup_request?.Invoke(targetUrl); //stop open popup newBrowser = null ; return true ; } bool ILifeSpanHandler.DoClose(IWebBrowser browserControl, IBrowser browser) { return false ; } void ILifeSpanHandler.OnBeforeClose(IWebBrowser browserControl, IBrowser browser){} void ILifeSpanHandler.OnAfterCreated(IWebBrowser browserControl, IBrowser browser) {} } } |
1 2 |
LifespanHandler life = new LifespanHandler(); chrome.LifeSpanHandler = life; |
1 |
private void life_popup_request( string obj){} |
1 |
life.popup_request += life_popup_request; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
using CefSharp; using CefSharp.WinForms; namespace popup_cefsharp { public partial class frm_main : Form { public frm_main() { InitializeComponent(); } //variable ChromiumWebBrowser chrome, chrome_popup; private void initialize_browser() { try { CefSettings settings = new CefSettings(); Cef.Initialize(settings); //main browser chrome = new ChromiumWebBrowser( this .txt_url.Text.Trim()); LifespanHandler life = new LifespanHandler(); chrome.LifeSpanHandler = life; life.popup_request += life_popup_request; this .pan_container.Controls.Add(chrome); chrome.Dock = DockStyle.Fill; //second browser (popup browser) chrome_popup = new ChromiumWebBrowser( "" ); this .pan_container_popup.Controls.Add(chrome_popup); chrome_popup.Dock = DockStyle.Fill; } catch (Exception ex) { MessageBox.Show( "Error in initializing the browser. Error: " + ex.Message); } } private void carregar_popup_new_browser( string url) { //open pop up in second browser chrome_popup.Load(url); } private void frm_main_FormClosing( object sender, FormClosingEventArgs e) { //close o object cef Cef.Shutdown(); Application.Exit(); } private void frm_main_Load( object sender, EventArgs e) { //initialize the browser this .initialize_browser(); } private void life_popup_request( string obj) { //function for open pop up in a new browser this .carregar_popup_new_browser(obj); } } } |
1 2 3 4 5 6 7 8 9 10 |
private void life_popup_request( string obj) { chrome_popup = new ChromiumWebBrowser(url); this .Invoke((MethodInvoker) delegate () { this .pan_container_popup.Controls.Clear(); this .pan_container_popup.Controls.Add(chrome_popup); }); chrome_popup.Dock = DockStyle.Fill; } |