Beruflich Dokumente
Kultur Dokumente
How capture the event open of a pop up, stop this event and open them wherever you wish
Introduction
CefSharp is a powerful embedding of chrome that allows you to customize a browser to perform the most diverse tasks of the day-to-day. As an example we can mention: read
authentication cookies of the sites that must be sign in, intercept pop up loaded by sites, among other necessities.
In the lines below, I'll show you how to simply capture the open event of a pop-up, stop this event and open them wherever you wish.
ILifeSpanHandler has 4 events (OnBeforePopup, DoClose, OnBeforeClose e OnAfterCreated) and they are responsible for handling all pop up events. For this task I'll use only the
OnBeforePopup event.
Background
For design, I used:
2. Create the event for receive the url of the pop up.
Hide Copy Code
https://www.codeproject.com/Articles/1194609/Capturing-a-pop-up-window-using-LifeSpanHandler-an 1/4
18/1/2018 Capturing a pop up window using LifeSpanHandler and CefSharp - CodeProject
3. In the OnBeforePopup event, send the url to the event of item 2 and stop the popup that is opening.
Hide Copy Code
//get url popup
if (this.popup_request != null)
this.popup_request(targetUrl);
4. Type the other events in the class. They have no source code.
When we forget to declare the signature of all interface events in the class, even if they are not used, this error "'popup_cefsharp.LifespanHandler' does not implement interface member
'CefSharp.ILifeSpanHandler.OnAfterCreated(CefSharp.IWebBrowser, CefSharp.IBrowser)'" happens.
namespace popup_cefsharp
{
public class LifespanHandler: ILifeSpanHandler
{
//event that receive url popup
public event Action 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
if (this.popup_request != null)
this.popup_request(targetUrl);
Inside of the form, the class LifeSpanHandler is initialize and attribute in the variable of the browser.
Below complete code. This code was typed inside of the windows form.
namespace popup_cefsharp
{
public partial class frm_main : Form
{
public frm_main()
{
InitializeComponent();
}
//variable
ChromiumWebBrowser chrome, chrome_popup;
//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;
https://www.codeproject.com/Articles/1194609/Capturing-a-pop-up-window-using-LifeSpanHandler-an 2/4
18/1/2018 Capturing a pop up window using LifeSpanHandler and CefSharp - CodeProject
//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);
}
}
Points of Interest
When you try to manipulate an object, other than the browser, in the life_popup_request event, the project generates an exception.
References
IlifeSpanHandler (CefSharp) - https://github.com/cefsharp/CefSharp/blob/master/CefSharp/Handler/ILifeSpanHandler.cs
Forum (answer 1)- https://stackoverflow.com/questions/30553577/how-to-handle-popup-links-in-cefsharp?noredirect=1&lq=1
License
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
Share
TWITTER FACEBOOK
https://www.codeproject.com/Articles/1194609/Capturing-a-pop-up-window-using-LifeSpanHandler-an 3/4
18/1/2018 Capturing a pop up window using LifeSpanHandler and CefSharp - CodeProject
Chromium (CefSharp) Tor Browser Window Tabs (WndTabs) Add-In for DevStudio
Display HTML in WPF and CefSharp Tutorial Part 1 To Heap or not to Heap; That’s the Large Object Question?
-- There are no messages in this forum --
Permalink | Advertise | Privacy | Terms of Use | Mobile Layout: fixed | fluid Article Copyright 2017 by Sheila Pontes
Seleccionar idioma ▼
Web02 | 2.8.180111.1 | Last Updated 4 Jul 2017 Everything else Copyright © CodeProject, 1999-2018
https://www.codeproject.com/Articles/1194609/Capturing-a-pop-up-window-using-LifeSpanHandler-an 4/4