Javascript设置超时导致访问被拒绝错误

Javascript设置超时导致访问被拒绝错误,javascript,jquery,asp.net,iframe,Javascript,Jquery,Asp.net,Iframe,我有以下情况: Main.aspx页面-->AJAX模式弹出窗口-->iFrame-->ASP.Net母版页-->Nested.aspx页面 在Nested.aspx页面上,我有以下JQuery脚本: window.onload = function () { setTimeout(function(){ // Some Code here setTimeo

我有以下情况:

Main.aspx页面-->AJAX模式弹出窗口-->iFrame-->ASP.Net母版页-->Nested.aspx页面

在Nested.aspx页面上,我有以下JQuery脚本:

             window.onload = function () 
            {
              setTimeout(function(){

              // Some Code here

              setTimeout(arguments.callee, 100);
              }, 100);
            }
当我关闭模式弹出窗口时,一切都会正常工作几秒钟,然后出现javascript错误“SCRIPT5:访问被拒绝”

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


你知道如何在模式关闭后停止计时器吗?我怀疑我必须通过Nested.aspx page window.unload函数中的javascript来实现这一点,但不确定具体是如何实现的?

您的代码与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);

您还可以在
setTimeout
函数中添加
if
语句来检查表单是否实际存在。

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

没有特定的表单。当我说表单时,我基本上是指由iFrame承载的页面。当我关闭承载iFrame的模式时,不会调用Nest.aspx pages windows.unload函数。感谢您的帮助。这并没有完全解决问题,但却把我引向了正确的方向+1它必须在
窗口上。卸载
函数,我将计时器设置为全局,因此基本上可以从关闭模式的同一个函数关闭计时器。所有页面是否都来自同一个域?
setInterval
正如您所说,是递归的,因为它可能会引发更多问题(代码将每隔x毫秒重复运行一次)并可能重新运行您的代码。此外,您可能必须使用
clearInterval