首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载/卸载iOS HTML5 <video>时的HTML5 Safari内存泄漏

加载/卸载iOS HTML5 <video>时的HTML5 Safari内存泄漏
EN

Stack Overflow用户
提问于 2011-03-02 16:26:11
回答 1查看 8.3K关注 0票数 18

我开发了一个带有几个UIWebViews的UIWebViews应用程序,它采用了下面的HTML和JavaScript。由于iPad一次只能播放一个视频,所以在特定的web视图聚焦之前,我不会加载该视频。

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

到现在为止还好。一切都很完美。除了一件事:,这会导致内存泄漏。

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

代码语言: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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-09 16:38:49

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

代码语言:javascript
复制
<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>
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5170398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档