UWP WebView捕获滚动事件

时间:2017-03-07 11:34:54

标签: webview uwp windows-phone

我曾经有一个滚动查看器用于条款和条件,当用户滚动到底部时,我使接受按钮处于活动状态,这样他们只能在滚动后继续。

我曾经使用以下代码捕捉滚动到底部事件:

scrollViewerMain.ViewChanged += ScrollViewerMain_ViewChanged;

private void ScrollViewerMain_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
    if (_scrolledToBottomEventHandlerHit)
    {
        return;
    }

    var verticalOffsetValue = scrollViewerMain.VerticalOffset;
    var maxVerticalOffsetValue = scrollViewerMain.ExtentHeight - scrollViewerMain.ViewportHeight;

    if (maxVerticalOffsetValue < 0 || verticalOffsetValue == maxVerticalOffsetValue)
    {
        _scrolledToBottomEventHandlerHit = true;
        // Scrolled to bottom - trigger event
        ScrolledToBottom(this, new EventArgs());
    }
}

这工作正常,但现在条款和条件都是html,所以我必须使用WebView控件,因此格式正确。没有ViewChanged事件 - 所以我怎样才能获得相同的结果 - 当用户滚动到WebView的底部时,按钮是否已启用?

1 个答案:

答案 0 :(得分:0)

应用程序无法直接访问WebView的滚动条,因为它是嵌入式Edge浏览器视图的一部分。但是,您可以使用WebView.InvokeScriptAsync方法解决问题,您可以在其中调用脚本,以检查用户到达页面末尾的时间。

await web.InvokeScriptAsync("eval", new string[] { script });

可以找到for example here这样的脚本。

要实际通知您的C#代码,当用户向下滚动到底部时,您还需要注入 Web允许对象。有一个很好的教程可用here on Martin Suchan's blog。您可以使用此注入的对象通知您有关该事件的C#代码,然后启用该方法中的按钮。