• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

400
Views
cómo detectar y abrir un enlace en una nueva pestaña/ventana/winform en DotNetBrowser

Uso DotNetBrowser y quiero abrir el enlace en una nueva ventana/winform/pestaña cuando hago clic en el enlace; sin embargo, cuando hacemos clic en cualquier enlace , DotNetBrowser los abre en la ventana actual. Sé que debo anular los eventos de DotNetBrowser , pero no sé qué evento. intente con CreatePopupHandler y no funciona, tampoco puedo encontrar ningún DotNetBrowser de muestra en ningún lado, espero que puedan ayudarme.

over 3 years ago · Santiago Trujillo
1 answers
Answer question

0

El controlador CreatePopupHandler se invoca cuando el motor desea saber si se puede crear una ventana emergente o no. Básicamente, puede usarlo para permitir o suprimir la creación de ventanas emergentes en general.

Si el controlador CreatePopupHandler permite crear una ventana emergente, se invoca el controlador OpenPopupHandler . En este controlador, puede acceder a la ventana emergente creada y mostrarla si es necesario.

Cuando inicializa un WinForms BrowserView , configura automáticamente la instancia de IBrowser dada con la implementación predeterminada de los CreatePopupHandler y OpenPopupHandler .

En este caso, hay dos escenarios cuando los enlaces se abren en una nueva ventana (emergente):

  1. La función JavaScript window.open() :
 window.open("https://www.google.com", "_blank", "resizable=yes, top=500, left=500, width=400, height=400");
  1. Un enlace con el atributo de target :
 <a href="https://www.google.com" target="_blank">Open Google</a>

Para cargar cualquier URL en una ventana o pestaña separada en un intento de navegación (por ejemplo, hacer clic en un enlace), deberá interceptar todas las solicitudes de navegación o las requeridas mediante StartNavigationHandler . En la implementación del controlador, debe crear una nueva ventana o pestaña con el navegador, cargar esta URL en ella y cancelar su carga en el navegador original. Por ejemplo:

 browser.Navigation.StartNavigationHandler = new Handler<StartNavigationParameters, StartNavigationResponse>((p) => { // Intercept all navigation requests to the URLs that start // with "https://dotnetbrowser" and load them into a new form if (p.Url.StartsWith("https://dotnetbrowser")) { BeginInvoke((Action)(() => { LoadNewWindow(p.Url); })); return StartNavigationResponse.Ignore(); } return StartNavigationResponse.Start(); }); browser?.Navigation.LoadUrl("https://teamdev.com/dotnetbrowser");

La implementación LoadNewWindow :

 private void LoadNewWindow(string url) { var browser1 = engine.CreateBrowser(); BrowserView browserView = new BrowserView { Dock = DockStyle.Fill }; browserView.InitializeFrom(browser1); Form form = new Form(); form.Width = 800; form.Height = 600; form.Closed += delegate { form.Controls.Clear(); if (!browser1.IsDisposed) { browser1.Dispose(); } }; form.Controls.Add(browserView); form.Show(); browser1.Navigation.LoadUrl(url); }
over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error