2009-08-14 56 views

回答

12

OK,我解決了這個問題:

Dim htmlDoc As HtmlDocument = wb.Document 
Dim scrollTop As Integer = htmlDoc.GetElementsByTagName("HTML")(0).ScrollTop 
+0

我已經搜索了巨大的網絡高低,並查看了無數的解決方案,但沒有奏效,但最終這個給了我想要的東西。謝謝,Marc。 – 2011-09-29 05:01:49

+0

這不起作用!!!,方法名稱預計? PLZ告訴我什麼我想我已經搜索網絡高和低3天:'( – Pomster 2012-06-20 13:23:16

+0

這個答案是寫在VB中。 – 2016-02-27 11:50:43

5

要實際滾動,我們發現ScrollIntoView方法很好地工作。例如,滾動到頁面的左上角。

this.webBrowser.Document.Body.FirstChild.ScrollIntoView(true); 

但是,我們並沒有真正獲得滾動位置(也就是說,我們沒有花太多時間嘗試)。如果你在控制HTML內容,你可能會考慮使用一些javascript將滾動位置複製到一個隱藏的元素中,然後使用DOM讀取該值。

ScrollTopScrollLeft僅允許在元素的邊界與其內容之間提供偏移。似乎沒有辦法通過這些值操作滾動。相反,你必須使用ScrollIntoView

+0

我我不能控制HTML內容,所以對我來說不起作用。我知道ScrollIntoView和ScrollTo函數,但不是滾動,而是想訪問webbrowser組件中的滾動條來讀取值。我當然可以在頁面中插入一些javascript,並讓它讀出值,但這是一個選項,我寧願不使用。 – 2009-08-14 13:38:03

0

我用這個

 if (this.webBrowser.Document != null) 
     { 
      int scrollPosition = this webBrowser.Document.Body.ScrollTop;     
     } 
0

能夠查詢滾動條的位置,您可以檢查documentElement

IHTMLElement2 page = 
(wb.Document.DomDocument as IHTMLDocument3).documentElement as IHTMLElement2; 
int pos = page.scrollTop; 
0

接受的答案是VB。對於C#WPF WebBrowser,我必須編寫以下內容。不知道我是否真的需要所有這些演員。如果一個人能擺脫任何這些演員陣容,這將是了不起的。

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; 
} 
2

任何有興趣,這裏是等價的C#代碼到馬克的回答是:

System.Windows.Forms.HtmlDocument htmlDoc = webBrowser.Document; 
if (htmlDoc != null) 
{ 
    int scrollTop = htmlDoc.GetElementsByTagName("HTML")[0].ScrollTop; 
    int scrollLeft = htmlDoc.GetElementsByTagName("HTML")[0].ScrollLeft; 
} 
0

我發現Kurt的答案几乎工作,但不得不改變陣列基準如下:

var document = (HTMLDocument)Browser.Document; 
var scrollTop = (int)document.getElementsByTagName("HTML").item(0).ScrollTop;