检测WebBrowser控件中的滚动到底部

时间:2017-01-05 06:25:54

标签: javascript c# html winforms webbrowser-control

我正在创建一个Windows表单来接受公司的一些条款和条件。因此,条款和条件在Web上,并通过WebBrowser控件导航到WinForm。只有在将完整文档滚动到底部后才需要启用“接受”按钮。我在VScrollBar控件(下面提到)或任何其他选项中搜索类似于ValueChanged事件的事件。

private void vScrollBar1_ValueChanged(object sender, EventArgs e)
    {
        if (vScrollBar1.Value+9 == vScrollBar1.Maximum)
        {
            acceptBtn.Enabled = true;
        }
    }

2 个答案:

答案 0 :(得分:2)

您应该处理onscrollwindow对象事件,并检查scrollHeight - scrollTop是否等于clientHeight documentElement。为此:

private void webBrowser1_DocumentCompleted(object sender, 
    WebBrowserDocumentCompletedEventArgs e)
{
    this.webBrowser1.Document.Window.AttachEventHandler("onscroll", OnScroll);
}

void OnScroll(object sender, EventArgs e)
{
    var script =
    @"(function()
       {
           var e = document.documentElement;
           if (e.scrollHeight - e.scrollTop === e.clientHeight)
               return true;
           else
               return false;
       })();";
    var result = webBrowser1.Document.InvokeScript("eval", new object[] { script });
    if ((bool)result)
        MessageBox.Show("Scrolled to end!");
}

答案 1 :(得分:1)

滚动条不是WebBrowser控件的一部分,而是显示的Html。您必须订阅所显示文档的窗口的Scroll事件

webBrowser1.Document.Window.Scroll += MyScrollCode;

https://msdn.microsoft.com/en-us/library/system.windows.forms.htmlwindow.scroll(v=vs.110).aspx