以编程方式滚动.NET浏览器窗口

时间:2012-12-25 13:46:57

标签: c# javascript scroll browser

要正确理解 - 此问题有以下附件:

  1. 我有一个带有延迟加载程序的页面 - 滚动时会激活
  2. Lazy loader由JavaScript处理
  3. 在页面末尾将加载100% - 您将看到一个必须激活的按钮。
  4. 以下是我试图写的一个例子:

        _WebContent.wbThread1.Focus();
        int length = 100;
    
        new Thread(() =>
            {
                for (int i = 0; i <= length; i++)
                {
                    System.Windows.Forms.SendKeys.Send("{PGDN}");
    
                    Thread.Sleep(new TimeSpan(0, 0, 3));
                    st.Start();
                }
            }).Start();
    

    一切进展顺利,但处理事件SendKey是一个问题,我们需要关注事件的区域,如果失去焦点就不会花费任何东西。


    我开始在MSDN上查找信息,并发现了一些非常有趣的处理滚动的内容:

    _WebContent.wbThread1.Document.Body.ScrollIntoView (true) / / allows scrolling to the top
    _WebContent.wbThread1.Document.Body.ScrollIntoView (false) / / allows scrolling to the bottom
    _WebContent.wbThread1.Document.Body.ScrollLeft = 100, / / sets the offset to the left
    _WebContent.wbThread1.Document.Body.ScrollTop = 100, / / sets the upward shift
    var rect = _WebContent.wbThread1.Document.Body.ScrollRectangle; / / returns the current position
    

    这些功能组合没有帮助。理论上代码有效,但在实践中我没有成功使用这个例子。

    我处理滚动后的事件,我会执行类似的事情:

    HtmlElementCollection _HtmlElementCollect = _WebContent.wbThread1.Document.GetElementsByTagName("A");
    foreach (HtmlElement link in _HtmlElementCollect)
                {
                    if (link.InnerText.Equals("Load More..."))
                        link.InvokeMember("Click");
                }
    

    您有什么建议?我如何才能最好地滚动?

1 个答案:

答案 0 :(得分:1)

您可以使用

滚动到底部
webCtrl.Document.Window.ScrollTo(0, Int32.MaxValue);