2017-02-24 65 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(); 
     } 
    }); 
})()