Javascript 爱奥尼亚公司;AngularJS,超时未取消
因为计时器的问题,我被卡住了 简单地说,代码提交一个表单,然后在iFrame中打开帖子的答案。 表单上的EventListener允许我检测“提交”并应用计时器来检测iFrame加载是否过长。 但是,即使加载了iFrame(=应该取消计时器),也会调用计时器的函数。 代码如下:Javascript 爱奥尼亚公司;AngularJS,超时未取消,javascript,angularjs,iframe,timer,timeout,Javascript,Angularjs,Iframe,Timer,Timeout,因为计时器的问题,我被卡住了 简单地说,代码提交一个表单,然后在iFrame中打开帖子的答案。 表单上的EventListener允许我检测“提交”并应用计时器来检测iFrame加载是否过长。 但是,即使加载了iFrame(=应该取消计时器),也会调用计时器的函数。 代码如下: [...] var el = document.getElementById("myForm"); if(el){ el.addEventListener("submit", function(event){ $
[...]
var el = document.getElementById("myForm");
if(el){
el.addEventListener("submit", function(event){
$scope.popupOpened=false;
var iframeWindow = window.parent.document.getElementById('myIframe');
var iframeDoc = iframeWindow.contentWindow.document;
//7 seconds before the popup is shown up
$rootScope.myTimer = $timeout(function(){
window.frames[0].stop();
if(!$scope.popupOpened){
errorConnexion2();//popup opening
}
}, 7000);
iframeWindow.onload=function(){
console.log("iframe loaded");
//cancel the timer
$timeout.cancel($rootScope.myTimer);
}
});
}
[……]
我还尝试了setTimeout和clearTimeout,并将它们全部清除如下:
我错过了什么?
提前谢谢你 好吧,我找到了计时器没有取消的原因 我尝试调试,在提交表单时设置alert(),它发现程序在submit eventListener中多次输入。 我曾想过抓住所有的定时器ID并杀死它们,但我最终决定放弃并找到根本原因 问题出现在我的视图中,在.html页面中,我多次调用“ng controller=“MyCtrl”!所以,我只是删除了额外的一个和程序工作
希望有帮助 好吧,我找到了计时器没有取消的原因 我尝试调试,在提交表单时设置alert(),它发现程序在submit eventListener中多次输入。 我曾想过抓住所有的定时器ID并杀死它们,但我最终决定放弃并找到根本原因 问题出现在我的视图中,在.html页面中,我多次调用“ng controller=“MyCtrl”!所以,我只是删除了额外的一个和程序工作 希望有帮助