我有以下情况:
Main.aspx Page ---> AJAX Modal PopUp ---> iFrame ---> ASP.Net Master Page ---> Nested.aspx页面
在Nested.aspx页面上,我有以下JQuery脚本:
window.onload = function ()
{
setTimeout(function(){
// Some Code here
setTimeout(arguments.callee, 100);
}, 100);
}
当我关闭Modal PopUp时,一切都会正常工作几秒钟,然后我收到一个javascript错误“SCRIPT5:访问被拒绝”。
我认为发生的事情是,在页面关闭后,计时器继续运行,并且它正在尝试访问iFrame外不再存在的表单,因此出现“拒绝访问”错误。
关于模态关闭后如何停止计时器的任何想法?我怀疑我必须通过Nested.aspx页面window.unload函数中的javascript来完成它,但不确定究竟是怎么做的?
答案 0 :(得分:1)
你的代码与JQuery无关,那就是说,你走了:
var timer1,timer2;
window.onload = function ()
{
timer1 = setTimeout(function(){
// Some Code here
timer2 = setTimeout(arguments.callee, 100);
}, 100);
}
// add this where needed (form close?)
clearTimeout(timer1);
clearTimeout(timer2);
您还可以在if
函数中添加setTimeout
语句,以检查表单是否在那里。
答案 1 :(得分:0)
好的,为了解决这个问题,我从使用递归的setTimeout()方法改为使用setInterval(),这本身就是递归的,它解决了这个问题。