如何在WPF WebBrowser中编程滚动页面?

5
在Windows窗体应用程序中,我使用以下代码来滚动Web浏览器内部的页面:
 HtmlDocument doc = webBrowser.Document;
 mshtml.IHTMLDocument2 htmldoc = (mshtml.IHTMLDocument2)doc.DomDocument;
 htmldoc.parentWindow.scrollBy(265, 20);

有人知道如何在WPF应用程序中实现相同的功能吗(不使用WindowsFormsHost)?

可能是重复问题 - http://stackoverflow.com/questions/238792/scroll-to-a-postion-in-a-web-browser-using-wpf - ChrisF
3个回答

8

如果您正在使用System.Windows.Controls.WebBrowser类,请查看Document属性。您应该能够将其强制转换为mshtml.HTMLDocument或mshtml.IHTMLDocument2并编写代码。

mshtml.HTMLDocument htmlDoc = webBrowser.Document as mshtml.HTMLDocument;
if (htmlDoc != null) htmlDoc.parentWindow.scrollBy(265, 20);

希望这对你有所帮助,在你身上不应该有问题。祝好!

2
仅供参考,只有当我将它放在_LoadCompleted()事件中时才有效。在任何早期的事件中都不起作用。 - Doug
.NET 4.0中是否可用mshtml? - Kyle Delaney

2

你应该轻松做到:

    private void WebBrowser_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {

        ((WebBrowser)sender).InvokeScript("eval", "$( document ).scrollTop( 1700 );");
    }

.scrollTop() have no argument.! Remove that 1700 - Waseem Ahmad Naeem
InvokeScript这一行会抛出COMException: Unknown name异常,无论是否有1700。 - Kyle Delaney

0

JavaScript代码:

window.onload=toBottom;

function toBottom() { alert("滚动到底部..."); window.scrollTo(0, document.body.scrollHeight); }

HTML代码:

> <html>
>     <head>
>         <script src="testme.js" language="javascript" type="text/javascript"></script>
>     </head>
>     <body>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>
>         Some big text<br>           
>     </body>
> </html>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接