WinRT - 如何在Webview中启用“定时注销”功能或在Webview中检测指针按下/攻丝事件

时间:2016-01-25 12:24:14

标签: webview windows-runtime microsoft-metro windows-8.1 winrt-xaml

我正在开发一个WinRT应用程序。其中一个要求是应用程序应具有“定时注销”功能。这意味着在任何屏幕上,如果应用程序闲置10分钟,应用程序应该注销并导航回主屏幕。

使用此链接并应用以下链接

中给出的逻辑

https://stackoverflow.com/a/18878954/3560390

除了webview之外,它在所有屏幕中均可正常使用,因为webview不支持任何触摸事件或点击事件。

https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.webview.aspx

如何在WinRT webview中启用“定时注销”功能?

欢迎任何帮助..

谢谢!

1 个答案:

答案 0 :(得分:0)

不幸的是,在Windows 10中对WebView的改进还没有解决这个限制。

以下是您可以尝试的两件事:

1)当用户导航到该页面时,开始您的10分钟计时器。 10分钟后,显示一个带有“确定”按钮的模态对话框,其中显示“单击以继续浏览... ”之类的内容。然后用户有10秒钟(或您选择的任何内容)点击确定。如果没有,则导航回主屏幕。

2)WebView确实有GotFocusLostFocus个工作。也许您可以使用这些方法重新启动10分钟计时器。

一个想法

如果 您的WebView正在加载内容 ms-appx-web,ms-local-stream, https 内容(在appxmanifest中需要内容URI规则) OR 如果您使用的是NavigateToString,那么您可以执行以下操作:

private void WebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
    MyWebView.InvokeScript("eval", new[]
    {
        "document.addEventListener('mousemove', function(){window.external.notify('MouseMove');});"
    });
}

private void MyWebView_ScriptNotify(object sender, NotifyEventArgs e)
{
    if( e.Value == "MouseMove" )
    {
        // Restart timer
    }
}