Necesito usar el navegador web en mi aplicación, ya que mantiene las tareas repetitivas de los empleados, pero hay un problema con javascript que abre una nueva ventana en IE después de hacer clic en el ancla. ¿Cómo le digo al control del navegador web "abrir nueva ventana" donde quiero que se abra? Por ejemplo, en el otro control de navegador web?Cómo forzar el control del navegador web para que siempre abra la página web en la misma ventana?
Respuesta
Salida: proof-of-concept of .NET System.Windows.Forms.WebBrowser module using código fuente
Mi experiencia acerca de que los controles me ha dado una visión de que este problema puede intentado resolver en los siguientes pasos:
siempre cancelar NewWindow evento
captura all links clicando
pero no todos enlace se puede almacenar en caché de esta manera, por lo que decidió analizar todas las etiquetas
<a>
manualmente en Document Loading Completionen general, este control es muy pobre y se ha hecho de manera deliberada por parte de Microsoft. aunque no es poderoso conjunto de herramientas en torno Webrowser.Document.HtmlDocument y espacio de nombres MSHTML
un ejemplo de que está usando es HtmlElement.DomElement
foreach(HtmlElement tag in webBrowser.Document.All) { switch (tag.TagName.ToUpper) { case "A": { tag.MouseUp += new HtmlElementEventHandler(link_MouseUp); break; } } } void link_MouseUp(object sender, HtmlElementEventArgs e) { HtmlElement link = (HtmlElement)sender; mshtml.HTMLAnchorElementClass a = (mshtml.HTMLAnchorElementClass)link.DomElement; switch (e.MouseButtonsPressed) { case MouseButtons.Left: { if ((a.target != null && a.target.ToLower() == "_blank") || e.ShiftKeyPressed || e.MouseButtonsPressed == MouseButtons.Middle) { // add new tab } else { // open in current tab } break; } case MouseButtons.Right: { // show context menu break; } } }
Ver más en el primer eslabón, que es el código fuente de la ventana principal, hay una muchas manipulaciones diferentes allí!
Hay un error en el caso MouseBUttons.Left
:
de error 1 El control no puede caer a través de una etiqueta de la caja ('caso 1048576:') a otro C: \ Documents and Settings \ jamás \ Mis documentos \ Visual Studio 2005 \ Projects \ Desarrollo \ wApp_SurverMonkey \ wApp_SurverMonkey \ frmNetcare.cs 64 17 wApp_SurverMonkey
Por qué una respuesta tan compleja chicos? Abatischev, tengo curiosidad de ver dentro de su cerebro, debe ser interesante ...
Intenta esto:
Private Sub WB1_NewWindow(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WB1.NewWindow
newUrl = WB1.Url.ToString
e.Cancel = True
WB1.Navigate(newUrl)
End Sub
Ahora usted puede cambiar la segunda línea en WB2 o cualquier otro componente WebBrowser en cualquier de tus PROPIOS formas
Encontré una solución simple que funciona.
private void WebBrowser1_NewWindow(object sender, System.ComponentModel.CancelEventArgs e) {
e.Cancel = true;
WebBrowser1.Navigate(WebBrowser1.StatusText);
}
Esto me ayudó mucho, muchas gracias. –
Gracias, Este código funciona bien (VS 2015, C#). No hay una nueva ventana ahora. Fácil de usar y el fragmento es pequeño. – user2422690
Solución brillante. Gracias Sam. – Neophile
- 1. Código de Javascript para forzar que la página html se abra en el navegador Chrome?
- 2. Incrustar ventana del navegador web en Java
- 3. Control del navegador web: cómo capturar eventos del documento?
- 4. Wix Abra la página web cuando finalice la desinstalación
- 5. Destacando mal Ortografía en el control del navegador web
- 6. Página de inicio del navegador web Android
- 7. Obtener java gui para abrir una página web en el navegador web
- 8. Cómo detectar que la misma página ya está abierta en otra ventana en IE
- 9. ¿Cómo funciona la geolocalización del navegador web?
- 10. ¿Cómo implementar una página web que se escala cuando se cambia el tamaño de la ventana del navegador?
- 11. Xampp: el navegador web no mostrará la página localhost
- 12. ¿Cómo encontrar la posición de un elemento en el control del navegador web?
- 13. cómo forzar un navegador para actualizar una versión en caché de una página web
- 14. Deshabilitar la memoria caché de página para forzar la carga de la página con el botón Atrás del navegador
- 15. Python - Flask - abrir una página web en el navegador predeterminado
- 16. cómo obtener la altura exacta del cuerpo de la ventana del navegador web?
- 17. Copie la página web actual en una nueva ventana
- 18. ¿Cómo identificar si una página web se está cargando dentro de un iframe o directamente en la ventana del navegador?
- 19. ¿Forzar el ComboBox para que se abra en Silverlight?
- 20. Obteniendo la altura y el ancho del cuerpo o la ventana de la página web
- 21. alerta Detener Javascript emergente en navegador web C# control de
- 22. ¿Puedo deshabilitar la autocompletación del navegador web?
- 23. Abrir el navegador a la página web Aplicación de Android
- 24. jQuery altura de la página web
- 25. Mostrar siempre la barra de desplazamiento del navegador para evitar que la página saltar
- 26. Haciendo que la imagen del pie de página se adhiera a la parte inferior del navegador web o página
- 27. Javascript: abrir nueva página en la misma ventana
- 28. ¿Cómo se puede hacer que una página web envíe a la impresora algo diferente a lo que está en la ventana del navegador?
- 29. abra una página web en IE usando C#
- 30. Cómo establecer un proxy para el control del navegador web sin afectar el proxy SYSTEM/IE
Estoy interesado en la respuesta a esto. Pero, ¿no debería el componente informar a su aplicación que se abrirá una nueva ventana? Debería abrir la nueva ventana con un nuevo componente WebBrowser. Tal vez hay un evento? –
Lamentablemente, el ancla es el enlace "javascript: void (0)". No sé cómo resolver este – Skuta
He editado mi publicación – abatishchev