因此,假设我以全屏模式打开html5视频(之后WebView引发了ContainsFullScreenElementChanged
,现在它的ContainsFullScreenElement
为真。我怎样才能以编程方式退出呢?
我正在联系SystemNavigationManager.GetForCurrentView().BackRequested
并希望退出全屏模式(如果存在),如果不存在则调用WebView.GoBack()。
WebView没有任何相关方法,ApplicationView类也没有帮助。
答案 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();
}"
};