2017-02-24 36 views
0

我使用的是一个x-ms-webview来显示一个嵌入式媒体网站,它的问题是我无法处理全屏幕事件,当用户想要去充满屏幕。 在iframe中,我可以使用webkitfullscreenchange来处理这个问题,但是使用x-ms-webview似乎不起作用。 任何人都可以解释为什么以及如何处理全屏幕事件来自x-ms-webview中的媒体? 感谢uwp javascript x-ms-webview webkitfullscreenchange事件

回答

1

我们可以用Web视图的使用InvokeScriptAsync方法来调用或注入脚本到Web视图内容的内容交互,以及ScriptNotify事件来获取信息从Web视图内容了。

要调用web查看内容中的onwebkitfullscreenchange事件,请使用InvokeScriptAsync方法。

要在调用window.external.notify时启用外部网页来触发ScriptNotify事件,必须在应用程序清单的ApplicationContentUriRules部分中包含页面的URI。 (您可以在Microsoft Visual Studio中的Package.appxmanifest设计器的Content URIs选项卡上执行此操作。)此列表中的URI必须使用HTTPS,并且可能包含子域通配符(例如https:// .microsoft.com)但它们不能包含域通配符(例如,https:// .com和https:// )。清单要求不适用于源自应用程序包的内容,使用ms-local-stream:// URI或使用NavigateToString加载。

欲了解更多信息,请参阅Interacting with web view content

例如:

<x-ms-webview id="webview" src="https://www.....com" width="1920" height="1080"></x-ms-webview> 
<script src="js/main.js"></script> 

JS代码:

(function (evt) { 
    "use strict" 
    var ViewManagement = Windows.UI.ViewManagement; 
    var FullScreenSystemOverlayMode = ViewManagement.FullScreenSystemOverlayMode; 
    var ApplicationView = ViewManagement.ApplicationView; 
    var view = ApplicationView.getForCurrentView(); 
    var webview = document.getElementById("webview");; 
    webview.addEventListener("MSWebViewFrameDOMContentLoaded", function() { 
     var op = webview.invokeScriptAsync("eval", "document.onwebkitfullscreenchange = function (evt) { window.external.notify('123'); }"); 
     op.start(); 
    }); 
    webview.addEventListener("MSWebViewScriptNotify", function (evt) { 
     if (view.isFullScreen) { 
      view.exitFullScreenMode(); 
     } 
     else { 
      view.tryEnterFullScreenMode(); 
     } 
    }); 
})()