Javascript setTimeOut导致访问被拒绝错误

时间:2013-06-21 13:10:03

标签: javascript jquery asp.net iframe

我有以下情况:

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来完成它,但不确定究竟是怎么做的?

2 个答案:

答案 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(),这本身就是递归的,它解决了这个问题。