0

我有以下情况:

Main.aspx 页面 ---> 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);
            }

当我关闭模态弹出窗口时,一切都会正常工作几秒钟,然后我收到一个 javascript 错误“SCRIPT5:访问被拒绝”。

我认为正在发生的事情是,计时器在页面关闭后继续运行,并且它试图访问 iFrame 之外不再存在的表单,因此出现“访问被拒绝”错误。

任何想法如何在模态关闭后停止计时器?我怀疑我必须通过 Nested.aspx 页面 window.unload 函数中的 javascript 来执行此操作,但不确定具体如何操作?

4

2 回答 2

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来检查表单是否确实存在。

于 2013-06-21T13:27:59.903 回答
0

好的,为了解决这个问题,我从使用递归 setTimeout() 方法更改为使用本质上递归的 setInterval() 方法,它解决了问题。

于 2013-06-21T14:10:22.487 回答