WebView UWP 中的平滑 scrollTo

Smooth scrollTo in WebView UWP

WebView UWP 中的 scrollTo 可以通过以下方式实现:

private string ScrollToTopString = @"window.scrollTo(0,0);";
private async void ButtonClick(object sender, RoutedEventArgs e)
{
    await WebViewTest.InvokeScriptAsync("eval", new string[] { ScrollToTopString });
}

但是 animated/Smooth 在 WebView UWP 中滚动怎么样?在 Android 中,这是通过官方实现或通过变体实现的(例如,使用 android.animation.ObjectAnimator),而在 UWP 中,据我所知似乎只有 ScrollViewer 支持它。 Example 2

有什么想法吗?

您不能为 WebView 设置动画,因为 WebView 本身实际上并没有滚动,就像您的浏览器实际上没有滚动一样;滚动的是 "window" 元素。

但是,如果我正确理解您的需求,只需将您的 ScrollToTopString 替换为:

var ScrollToTopString = @"var int = setInterval(function() { 
window.scrollBy(0, -5);

if( window.pageYOffset === 0 )
    clearInterval(int);
}, 1);";

这将滚动我提到的 "window" 元素。您可以提高间隔的速度(我将其设置为 1)以减慢动画速度,或降低 scrollBy 的值以使其运行得更快。