WinRT-如何启用;“定时注销”;Webview中的功能或检测Webview中的指针按下/轻敲事件

WinRT-如何启用;“定时注销”;Webview中的功能或检测Webview中的指针按下/轻敲事件,webview,windows-runtime,microsoft-metro,windows-8.1,winrt-xaml,Webview,Windows Runtime,Microsoft Metro,Windows 8.1,Winrt Xaml,我正在开发WinRT应用程序。其中一个要求是应用程序应该具有“定时注销”功能。这意味着,在任何屏幕上,如果应用程序已空闲10分钟,应用程序应注销并导航回主屏幕 通过使用此链接,并应用下面链接中给出的逻辑 由于webview不支持任何触摸事件或点击事件,因此它在除webview之外的所有屏幕上都可以正常工作。 如何在WinRT webview中启用“定时注销”功能 欢迎任何帮助 谢谢 不幸的是,Windows 10中对WebView的改进并没有解决这个限制 以下是两件您可以尝试的事情: 1)

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

通过使用此链接,并应用下面链接中给出的逻辑

由于webview不支持任何触摸事件或点击事件,因此它在除webview之外的所有屏幕上都可以正常工作。

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

欢迎任何帮助


谢谢

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

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

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

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

主意 如果您的WebView正在使用ms appx web、ms local stream、https内容加载内容(这需要在您的appxmanifest中使用内容URI规则)如果您使用的是
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
    }
}

不幸的是,Windows10中WebView的改进并没有解决这个限制

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

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

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

主意 如果您的WebView正在使用ms appx web、ms local stream、https内容加载内容(这需要在您的appxmanifest中使用内容URI规则)如果您使用的是
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
    }
}