如何以编程方式退出WebView中的全屏模式?

时间:2016-01-20 09:07:55

标签: c# webview uwp

因此,假设我以全屏模式打开html5视频(之后WebView引发了ContainsFullScreenElementChanged,现在它的ContainsFullScreenElement为真。我怎样才能以编程方式退出呢?

我正在联系SystemNavigationManager.GetForCurrentView().BackRequested并希望退出全屏模式(如果存在),如果不存在则调用WebView.GoBack()。

WebView没有任何相关方法,ApplicationView类也没有帮助。

1 个答案:

答案 0 :(得分:3)

好的,所以经过搜索后我找到了一个解决方案。

HTML5有fullscreen api,可用于要求全屏或退出。您可以使用WebView的InvokeScriptAsync方法运行它。在我的特定情况下,我最终得到了与此类似的代码:

string[] args = {
    @"if (document.exitFullscreen) {
        document.exitFullscreen();
      }
      else if (document.msExitFullscreen) {
        document.msExitFullscreen();
      }"
};

await CurrentWebView.InvokeScriptAsync("eval", args);

第一个条款实际上对我有用,但为了以防万一,我留下了第二个条款。

哦,顺便说一下,如果你像我一样在InvokeScriptAsync处理程序中调用BackRequested,你可能希望在调用之前将BackRequestedEventArgs.Handled设置为true ,因为这是一个异步方法,事件将进一步传递给未处理的其他订阅者,这可能会导致不良行为。

编辑:好像这个脚本在周年纪念更新(build 14393)中不起作用。但是,如果再添​​加一个带有webkit前缀的检查,它将起作用。这样的事情(或者你可以用webkit前缀留下一张支票):

string[] args = {
    @"if (document.exitFullscreen) {
        document.exitFullscreen();
    } else if (document.msExitFullscreen) {
        document.msExitFullscreen();
    } else if(document.webkitExitFullscreen) {
        document.webkitExitFullscreen();
    }"
};