WebView滚动内容

本文关键字:滚动 WebView | 更新日期: 2023-09-27 18:26:23

如何在WebView中设置页面滚动位置?我通过在页面上添加JavaScript获得X和Y坐标:

window.onscroll = scroll;
function scroll () {"
window.external.notify(window.pageXOffset + '",'" + window.pageYOffset)"
}

并将X和y保存在阵列中:

private void WebView_OnScriptNotify(object sender, NotifyEventArgs e)
        {
            string[] valuePair = e.Value.Split(',');
            XY[0] = int.Parse(valuePair[0]);
            XY[1] = int.Parse(valuePair[1]);
        }

但当我加载页面并想恢复滚动位置时,如何在WebView中滚动页面?

WebView滚动内容

您大部分时间都在那里。您需要在离开页面时保存当前位置,然后在返回页面时导航回该位置。试试这个:

在MainPage.xaml.cs:中

    static Point ScrollPosition = new Point();
    private void MyWebView_ScriptNotify(object sender, NotifyEventArgs e)
    {
        string[] Coordinates = e.Value.Split(',');
        ScrollPosition.X = double.Parse(Coordinates[0]);
        ScrollPosition.Y = double.Parse(Coordinates[1]);
    }
    private async void MyWebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
    {
        await MyWebView.InvokeScriptAsync("SetScrollPosition", new string[] { ScrollPosition.X.ToString(), ScrollPosition.Y.ToString() });
    }

在MainPage.xaml:中

  <WebView x:Name="MyWebView" Width="800" Height="500" Source="ms-appx-web:///HTMLPage1.html" ScriptNotify="MyWebView_ScriptNotify" NavigationCompleted="MyWebView_NavigationCompleted"/>

在HTMLPage1.html:中

  window.onscroll = GetScrollPosition;
    function GetScrollPosition() {
        window.external.notify(window.pageXOffset + "," + window.pageYOffset);
    }
    function SetScrollPosition(X, Y) {
        window.scrollTo(X, Y);
        window.external.notify(window.pageXOffset + "," + window.pageYOffset);
    }