2017-02-24 6 views
0

x-ms-webview를 사용하여 임베디드 미디어 웹 사이트를 표시하고 있습니다. 사용자가 전체 화면으로 이동하려고 할 때 전체 화면 이벤트를 처리 할 수 ​​없다는 문제가 있습니다. 화면. iframe에서 이것을 처리하기 위해 webkitfullscreenchange를 사용할 수 있지만 x-ms-webview가 작동하지 않는 것처럼 보입니다. 누구나 그 이유를 설명 할 수 있습니다. 전체 화면 이벤트를 처리하는 방법은 x-ms-webview의 미디어에서 왔습니다. 감사합니다.uwp javascript x-ms-webview webkitfullscreenchange 이벤트

답변

1

InvokeScriptAsync 메서드를 사용하여 웹보기 콘텐츠에 스크립트를 삽입하거나 주입하는 방법과 웹보기 콘텐츠에서 정보를 다시 가져 오기 위해 ScriptNotify 이벤트를 사용하여 웹보기의 콘텐츠와 상호 작용할 수 있습니다.

웹보기 내용 내에서 onwebkitfullscreenchange 이벤트를 호출하려면 InvokeScriptAsync 메서드를 사용하십시오.

window.external.notify를 호출 할 때 외부 웹 페이지에서 ScriptNotify 이벤트를 발생 시키려면 페이지의 URI를 앱 매니페스트의 ApplicationContentUriRules 섹션에 포함시켜야합니다. Microsoft Visual Studio에서 Package.appxmanifest 디자이너의 콘텐츠 URI 탭에서이 작업을 수행 할 수 있습니다.이 목록의 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(); 
     } 
    }); 
})()