【问题标题】:How to programmatically exit fullscreen mode in WebView?如何以编程方式在 WebView 中退出全屏模式?
【发布时间】:2016-01-20 09:07:54
【问题描述】:

假设我以全屏模式打开了 html5 视频(之后 WebView 引发 ContainsFullScreenElementChanged 并且 ContainsFullScreenElement 现在是真的)。如何以编程方式退出它?

我正在连接SystemNavigationManager.GetForCurrentView().BackRequested,如果它存在,我想退出全屏模式,如果不存在,则调用 WebView.GoBack()。

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

【问题讨论】:

    标签: c# webview uwp


    【解决方案1】:

    好的,所以在搜索了更多之后我找到了解决方案。

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

    string[] args = {
        @"if (document.exitFullscreen) {
            document.exitFullscreen();
          }
          else if (document.msExitFullscreen) {
            document.msExitFullscreen();
          }"
    };
    
    await CurrentWebView.InvokeScriptAsync("eval", args);
    

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

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

    编辑: 似乎此脚本在周年更新(内部版本 14393)中不起作用。但是,如果您再添加一个带有 webkit 前缀的检查,它将起作用。像这样的东西(或者你可以只留下一个带有 webkit 前缀的检查):

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

    【讨论】:

      猜你喜欢
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2023-04-05
      相关资源
      最近更新 更多