Ho provato a utilizzare webBrowser1.Document.Body.ScrollTop
e webBrowser1.Document.Body.ScrollLeft
, ma non funzionano. Restituiscono sempre 0 e non riesco ad accedere a webBrowser1.Document.documentElement.ScrollTop
e .ScrollLeft
.Come recuperare la posizione della barra di scorrimento del controllo del browser in .NET
risposta
OK, ho risolto:
Dim htmlDoc As HtmlDocument = wb.Document
Dim scrollTop As Integer = htmlDoc.GetElementsByTagName("HTML")(0).ScrollTop
Per scorrere effettivamente, abbiamo rilevato che il metodo ScrollIntoView
funzionava correttamente. Ad esempio, per scorrere fino all'angolo superiore sinistro della pagina.
this.webBrowser.Document.Body.FirstChild.ScrollIntoView(true);
Tuttavia, non sono riusciti a ottenere effettivamente la posizione di scorrimento (che ha detto, non abbiamo fatto passare molto tempo cercando). Se hai il controllo del contenuto HTML, potresti prendere in considerazione l'uso di alcuni javascript per copiare la posizione di scorrimento in un elemento nascosto e quindi leggere quel valore usando il DOM.
ScrollTop
e ScrollLeft
consentono semplicemente di fornire un offset tra il limite di un elemento e il suo contenuto. Sembra che non ci sia modo di manipolare la pergamena con quei valori. Invece, devi usare ScrollIntoView
.
I Non ho il controllo del contenuto HTML, quindi non funzionerà per me. So delle funzioni ScrollIntoView e ScrollTo, ma invece di scorrere voglio accedere alla barra di scorrimento nel componente del browser per leggere i valori. Naturalmente potrei inserire qualche javascript nella pagina e lasciare che legga i valori, ma questa è un'opzione che preferisco non usare. –
sono stato in grado di interrogare la posizione di scorrimento di utilizzare questo
if (this.webBrowser.Document != null)
{
int scrollPosition = this webBrowser.Document.Body.ScrollTop;
}
È possibile controllare documentElement
IHTMLElement2 page =
(wb.Document.DomDocument as IHTMLDocument3).documentElement as IHTMLElement2;
int pos = page.scrollTop;
risposta accettata è VB. Per C# WPF WebBrowser, ho dovuto scrivere quanto segue. Non ho idea se ho davvero bisogno di tutti quei calchi o no. Se uno può sbarazzarsi di uno di quei calchi, sarebbe fantastico.
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;
}
Per chiunque sia interessato, ecco il codice C# equivalente alla risposta di 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;
}
Ho trovato la risposta di Kurt quasi funzionato, ma ha dovuto modificare il riferimento array come segue:
var document = (HTMLDocument)Browser.Document;
var scrollTop = (int)document.getElementsByTagName("HTML").item(0).ScrollTop;
- 1. Come ottenere la posizione della barra di scorrimento con Javascript?
- 2. Determinazione della posizione della finestra del browser in JavaScript?
- 3. Controllo della finestra del browser tramite Javascript
- 4. Modifica posizione barra di scorrimento
- 5. contenuto overlay barra di controllo inferiore del browser Android
- 6. Trova la posizione verticale della barra di scorrimento senza jQuery
- 7. Barra di scorrimento del doppio browser con overflow nascosto
- 8. Impostazione di una posizione barra di scorrimento
- 9. In Sencha touch2 Come abilitare la barra di scorrimento del browser
- 10. Come rimuovere la barra di scorrimento del layout in primefaces?
- 11. Come modificare la barra di scorrimento nella progettazione personalizzata? (evita di utilizzare l'aspetto predefinito del browser)
- 12. Crea scorrimento NavBar nella parte superiore del browser in Bootstrap
- 13. Android set scrollLeft durante l'aggiornamento del contenuto sull'evento di scorrimento non aggiorna la posizione della barra di scorrimento
- 14. .NET visualizzatore HTML/alternative di controllo del browser Web
- 15. Scorrimento uniforme della pagina verticale usando la rotellina del mouse e la barra di scorrimento
- 16. Finestra modale che occupa la barra di scorrimento del browser come su Pinterest
- 17. Div opacità basata sulla posizione della barra di scorrimento
- 18. Come regolare/modificare la larghezza della barra di scorrimento
- 19. Come si conosce la larghezza attuale della barra di scorrimento del sistema?
- 20. Limiti di altezza per la barra di scorrimento verticale del browser
- 21. Come trovare l'indice della posizione attuale nella cronologia del browser
- 22. Come resettare la posizione della barra di scorrimento permanente dopo il div refresh in FF3?
- 23. Prevenzione del relayout a causa della barra di scorrimento
- 24. posizione del mouse - la compatibilità del browser Cross - Javascript
- 25. CListCtrl: come mantenere la posizione di scorrimento?
- 26. Come reimpostare la posizione di scorrimento della pagina dopo la manipolazione del DOM?
- 27. Come trovare la posizione di un elemento nel controllo del browser Web?
- 28. Scorri 2 contenuti DIV + contenuto principale con la barra di scorrimento principale del browser
- 29. Disattivazione testo barra di stato del browser
- 30. CSS: come ottenere la larghezza della barra di scorrimento del browser? (per: hover {overflow: auto} nice margins)
Ho cercato il vasto web in alto e in basso e ho visto una miriade di soluzioni che non hanno funzionato, ma questo, finalmente questo, mi ha dato quello che volevo. Grazie, Marc. –
Questo non funziona !!!, si aspetta il nome del metodo ?? per favore dimmi cosa mi manca ho cercato il web in alta e bassa per 3 giorni: '( – Pomster
Questa risposta è scritta in VB. –