gpt4 book ai didi

ipad - 加载/卸载 HTML5

转载 作者:IT王子 更新时间:2023-10-29 08:14:33 25 4
gpt4 key购买 nike

我开发了一个 iPad 应用程序,其中包含多个采用以下 HTML 和 JavaScript 的 UIWebView。由于 iPad 一次只能播放一个视频,因此我不会加载视频,直到聚焦特定的 WebView 。

这是通过调用 UIWebView 上的 stringByEvaluatingJavaScriptFromString 方法,发送对 JS 方法 getFocus() 的调用来完成的。同样,当不再需要 Web View 时,我调用 lostFocus() 来卸载视频。这使另一个 UIWebView 可以播放另一个视频。

到目前为止,还不错。一切都很完美。除了一件事:这会导致内存泄漏。无论何时查看

我尝试重新加载 UIWebView(而不是使用 JS 卸载视频),但没有用。我还尝试了无数种不同的 JavaScript 变体、标签变体等等。

<div id="videoDiv"></div>

<script type="text/javascript">
var movieDiv = document.getElementById('videoDiv'),
movieHtml = '<video id="video" src="../Documents/<%= VideoFileName %>" width="768" height="911"></video>';

var gotFocus = function () {
movieDiv.innerHTML = movieHtml;
var movie = document.getElementById('video');
movie.play();
movie.addEventListener('pause', function () {
movie.currentTime = 0;
movie.play();
}, false);
};
var lostFocus = function () {
movieDiv.innerHTML = '';
};
</script>

最佳答案

我终于解决了这个问题!解决方案是清空 src 并“加载”一个不存在的视频。这不会导致内存泄漏。看看:

<div id="videoDiv"></div>

<script type="text/javascript">
var movieDiv = document.getElementById('videoDiv'),
movieHtml = '<video id="video" src="" width="768" height="911"></video>';

movieDiv.innerHTML = movieHtml;
var movie = document.getElementById('video');

var gotFocus = function () {
movie.src = '../Documents/<%= VideoFileName %>';
movie.load();
movie.play();
movie.addEventListener('pause', function () {
movie.currentTime = 0;
movie.play();
}, false);
};
var lostFocus = function () {
movie.src = '';
movie.load(); // This line may be removed, see comments
};
</script>

关于ipad - 加载/卸载 HTML5 <video> 时 iOS Safari 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com