Intenté usar webBrowser1.Document.Body.ScrollTop
y webBrowser1.Document.Body.ScrollLeft
, pero no funcionan. Siempre devuelven 0 y no puedo acceder a webBrowser1.Document.documentElement.ScrollTop
y .ScrollLeft
.Cómo recuperar la posición de la barra de desplazamiento del control webbrowser en .NET
Respuesta
OK, lo resolví:
Dim htmlDoc As HtmlDocument = wb.Document
Dim scrollTop As Integer = htmlDoc.GetElementsByTagName("HTML")(0).ScrollTop
Para desplazarse realmente, encontramos que el método ScrollIntoView
funcionó bien. Por ejemplo, para desplazarse a la esquina superior izquierda de la página.
this.webBrowser.Document.Body.FirstChild.ScrollIntoView(true);
Sin embargo, no tuvimos éxito en conseguir realmente la posición de desplazamiento (que dijimos, que no pasamos mucho tiempo tratando). Si tiene el control del contenido HTML, puede considerar usar algún javascript para copiar la posición de desplazamiento en un elemento oculto y luego leer ese valor usando el DOM.
ScrollTop
y ScrollLeft
simplemente permiten proporcionar un desplazamiento entre el límite de un elemento y su contenido. Parece que no hay forma de manipular el desplazamiento por esos valores. En su lugar, debe usar ScrollIntoView
.
I No tengo el control del contenido HTML, así que eso no funcionará para mí. Sé sobre las funciones ScrollIntoView y ScrollTo, pero en lugar de desplazarme, quiero acceder a la barra de desplazamiento en el componente webbrowser para leer los valores. Por supuesto, podría insertar algunos javascript en la página y dejar que lea los valores, pero esa es una opción que prefiero no usar. –
que era capaz de consultar la posición de desplazamiento que utiliza este
if (this.webBrowser.Document != null)
{
int scrollPosition = this webBrowser.Document.Body.ScrollTop;
}
Puede comprobar documentElement
IHTMLElement2 page =
(wb.Document.DomDocument as IHTMLDocument3).documentElement as IHTMLElement2;
int pos = page.scrollTop;
respuesta aceptada es VB. Para C# WPF WebBrowser, tuve que escribir lo siguiente. No tengo idea si realmente necesito todos esos moldes o no. Si uno puede deshacerse de cualquiera de esos moldes, eso sería fantástico.
using mshtml;
int? GetScrollTop(System.Windows.Controls.WebBrowser browser)
{
object doc = browser.Document;
HTMLDocument castDoc = doc as HTMLDocument;
IHTMLElementCollection elements = castDoc?.getElementsByTagName("HTML");
IEnumerator enumerator = elements?.GetEnumerator();
enumerator?.MoveNext();
var first = enumerator?.Current;
IHTMLElement2 castFirst = first as IHTMLElement2;
int? top = castFirst?.scrollTop;
return top;
}
Para todos los interesados, aquí está el código C# equivalente a la respuesta de Marc:
System.Windows.Forms.HtmlDocument htmlDoc = webBrowser.Document;
if (htmlDoc != null)
{
int scrollTop = htmlDoc.GetElementsByTagName("HTML")[0].ScrollTop;
int scrollLeft = htmlDoc.GetElementsByTagName("HTML")[0].ScrollLeft;
}
me encontré con la respuesta de Kurt casi funcionó, pero tuvo que cambiar la referencia de matriz de la siguiente manera:
var document = (HTMLDocument)Browser.Document;
var scrollTop = (int)document.getElementsByTagName("HTML").item(0).ScrollTop;
- 1. ¿Cambiar la posición de la barra de desplazamiento en TextBox?
- 2. Cómo mostrar la barra de direcciones en el control WebBrowser
- 3. Cambio de la posición de la barra de desplazamiento
- 4. PrimeFaces barra de desplazamiento de datos en la posición deseada
- 5. obteniendo la posición absoluta del elemento HTML en el control del webbrowser con C#
- 6. Ocultar barras de desplazamiento en el control webBrowser
- 7. Recuperando el texto seleccionado del control Webbrowser en .net (C#)
- 8. Caché y el control WebBrowser en .Net
- 9. Cómo ocultar la barra de desplazamiento vertical en .NET Control ListView en modo Detalles
- 10. Configurar una posición de la barra de desplazamiento
- 11. posición extraña de la barra de desplazamiento de iScroll
- 12. cómo mantener la posición de la barra de desplazamiento en la vista de lista de Android?
- 13. Obtener la posición del ratón en desplazamiento
- 14. Deshabilitar la barra de desplazamiento del navegador
- 15. Desplazamiento de la barra de desplazamiento del navegador
- 16. CListCtrl: ¿Cómo mantener la posición de desplazamiento?
- 17. js/css: desactivar la barra de desplazamiento, pero mantener la posición de desplazamiento
- 18. Javascript keyup/keydown en .NET WebBrowser Control
- 19. Cómo hacer un marcador de posición de barra de desplazamiento
- 20. Tome capturas de pantalla del control WebBrowser
- 21. ¿Cómo obtener la posición de la barra de desplazamiento con Javascript?
- 22. Opacidad Div basada en la posición de la barra de desplazamiento
- 23. Agregar borde al control WebBrowser
- 24. ¿Cómo sincronizo la posición de desplazamiento de dos divisiones?
- 25. Cuadros de diálogo de bloqueo en el control .NET WebBrowser
- 26. Establecer la posición de desplazamiento
- 27. C# Panel con desplazamiento automático - Restablecimiento de la posición de Srollbar en un foco de control
- 28. Cómo detectar la ejecución de javascript en el control WebBrowser
- 29. ¿Cómo bloquear las descargas en el control .NET WebBrowser?
- 30. Cómo mostrar siempre la barra de desplazamiento
He buscado en la gran web alta y baja y he visto una miríada de soluciones que no han funcionado, pero esto, finalmente, me dio lo que quería. Gracias, Marc. –
¡Esto no funciona! ¿Se espera el nombre del método? por favor, dígame qué me falta si busqué en la web alta y baja durante 3 días: '( – Pomster
) Esta respuesta está escrita en VB. –