Windows 8 WInJS:当用户离开页面时卸载x-ms-webview

Windows 8 WInJS:当用户离开页面时卸载x-ms-webview,windows-8,microsoft-metro,windows-8.1,winjs,Windows 8,Microsoft Metro,Windows 8.1,Winjs,我的WinJS应用程序中有一个x-ms-webview控件,可以播放youtube视频 当我离开页面时,视频中的音频会继续播放,因为(我假设)webview没有正确卸载 当用户离开页面导航时,删除webview的最佳方式是什么 HTML: JS:videoPlayer.src=video.VideoURL EDIT:我在页面的卸载事件中使用了navigateToString(“”方法,尝试了一个可怕的错误。设置此属性将停止播放声音,但我希望这不是唯一可用的选项。还有另一个解决方法:您可以在Pag

我的WinJS应用程序中有一个x-ms-webview控件,可以播放youtube视频

当我离开页面时,视频中的音频会继续播放,因为(我假设)webview没有正确卸载

当用户离开页面导航时,删除webview的最佳方式是什么

HTML:

JS:
videoPlayer.src=video.VideoURL


EDIT:我在页面的卸载事件中使用了
navigateToString(“”
方法,尝试了一个可怕的错误。设置此属性将停止播放声音,但我希望这不是唯一可用的选项。

还有另一个解决方法:您可以在PageControl的卸载“处理程序”中处理WebView元素:

(function () {

    var webView,
        page = WinJS.UI.Pages.define("/pages/webView/webView.html", {
            ready: function (element, something) {

                webView = document.querySelector("#myWebView");
                webView.src = "http://www.youtube.com/watch?v=dk5-gCc_4s4";

            },
            unload: function () {
                webView.parentNode.removeChild(webView);
                webView = null;
            }
        });

})();

YouTube视频将继续播放约一分钟。当您使用WebView导航回页面时,该元素将使用该页面控件重新加载。我认为您使用
navigateToString(“”)的解决方案是最好的。

您今天做得怎么样?您的主机代码是否有可能引用视频播放器(或任何内部元素),从而可能导致其粘滞?在导航代码中有一个onNavigated事件,该事件调用页面控件上的unload和WinJS.Utilities.Empty。我假设这可以处理所有事情?我希望它能够处理,除非有东西从主机抓到页面中的某些东西。我在JS中引用webview控件的唯一位置是当我将src属性设置为youtube链接时。谢谢Eric,我现在就不说了,但我会用你的技术来解决另一个问题,我在iframe中使用Bing地图。顺便说一句,你的书很棒!谢谢你对这本书的赞扬,尽管我想知道你是否在想Kraig Brockschmidt的书。(Kraig很好地工作,顺便说一句)如果你在一个iFrAME中使用Bing MAP,你也可以考虑使用Bing MAP SDK(如果你还没有)MSDN.MaSo.CON/EN-US/LabValue/FF42464 3.ASPX。WiRT SDK 100.105862D的WebVIEW似乎仍然有这个CPU和内存泄漏!这确实是一个漏洞,因为加载同一页面会从可视树中删除所有XAML资源,也就是说,这些资源已卸载,包括webview本身,但webview仍在独立运行,即运行脚本等。这在近2年后仍然是一个问题。。。EricSchmidt MSFT还有其他解决办法吗?您提供的答案可能会也可能不会处理DOM节点,但它保留了底层webview表示,这对于我们的视频密集型应用程序来说是一个巨大的内存泄漏。