在cordova中使用angular/Embedded youtube更改IFRAME src时IOS内存累积?
恐怕我和你有同样的问题 我的cordova ionic IOS应用程序中有一个用于嵌入YouTube视频的空白IFRAME 我通过单击下一个视频更改iframe的NG-SRC=“”。但经过测试,手机/cordova/webview似乎正在缓存iFrame的旧内容。在内存崩溃之前,我只能看完20个左右的视频 我尝试过使用angular.element.remove()删除iframe,并首先将iframe src设置为空,但这两种方法似乎都不影响每个Xcode使用的内存量。我也尝试过cordova插件ClearCache,但也没有清除任何内存 请帮忙!有没有更好的方法将youtube嵌入cordova应用程序? 我花了数周的时间来研究这一切,让它在我周围崩溃(没有双关语) 我的视频视图如下:在cordova中使用angular/Embedded youtube更改IFRAME src时IOS内存累积?,ios,angularjs,cordova,iframe,ionic-framework,Ios,Angularjs,Cordova,Iframe,Ionic Framework,恐怕我和你有同样的问题 我的cordova ionic IOS应用程序中有一个用于嵌入YouTube视频的空白IFRAME 我通过单击下一个视频更改iframe的NG-SRC=“”。但经过测试,手机/cordova/webview似乎正在缓存iFrame的旧内容。在内存崩溃之前,我只能看完20个左右的视频 我尝试过使用angular.element.remove()删除iframe,并首先将iframe src设置为空,但这两种方法似乎都不影响每个Xcode使用的内存量。我也尝试过cordova
<ion-view view-title="Random Video">
<iframe id="youtube" sandbox="allow-scripts allow-same-origin" ng-src="{{video.url | trustAsResourceUrl}}" frameborder="0" allowfullscreen></iframe>
<h4>{{video.title}}</h4>
<button ng-click="nextVideo()">
</ion-view>
angular.module('starter.controllers')
.controller('VideoCtrl', function(VideoService) {
$scope.video = {};
$scope.nextVideo = function() {
$scope.video = null; //doesnt seem to help
//$scope.$destroy(); //doesn't help
//angular.element(document.querySelector( '#youtube' )).attr("src", " ");
//angular.element(document.querySelector( '#youtube' )).remove();
//neither of the above 2 remove any memory
VideoService.getVideo().then(function(response){
$scope.video = response.data;
});
}
$scope.nextVideo();
});
请注意,当我将我的应用程序加载到网站上,并加载到chrome中时,我可以循环浏览视频,而不会看到内存使用量增加(至少查看taskmgr.exe)似乎将iframe设置为空字符串就足够了,但对于某些浏览器和某些情况而言,这是不够的。可能需要递归地逐个删除事件侦听器和元素。也许令人惊讶的是,下面的递归方法(1)比只设置为空字符串(2)更快: 1.递归的
while (box.lastChild) {
box.removeChild(box.lastChild);
}
2。设置空字符串
myNode.innerHTML = '';
请参阅以供参考
此外,在递归方法中,可能需要对某些项应用特殊处理,例如首先删除事件监听器、取消函数()并使用专用的清理方法,如jQuery()
您可以尝试的另一个策略是为您播放的每个视频加载一个新的带有新iframe的网页。加载新页面应使浏览器能够释放先前声明的内存