如何在非活动的iframe中停止javascript ajax请求?

时间:2012-10-02 14:30:44

标签: javascript jquery ajax iframe polling

我制作了网站,其中包含i帧的“应用程序”内置了各种其他页面:

<iframe id="frame1" src="./app1.php">
<iframe id="frame2" src="./app2.php">

在这些应用程序中,执行了javascript代码,其中包括非常频繁的HTTP请求。

$('#app1button').click(function () {
     //Here i have to stop the HTTP-Requests which where fired from the JS of App2
     hideAllApps();
     showApp(app1);
});

app1非常频繁地从服务器轮询信息:

app1.php里面有Javascript ::

 Handler = window.setInterval(getStatus, 100); //start status messages

当我现在点击app2时,另一个应用程序弹出,我想停止由于性能原因加载到app1.php中的javascript。

$('#app2button').click(function () {
    //Here i have to stop the HTTP-Requests which where fired from the JS of App1
    hideAllApps();
    showApp(app2);
});

我该怎么做?你有什么想法吗?

提前致谢。

3 个答案:

答案 0 :(得分:5)

从第2帧开始,您可以尝试window.parent.frame["frame1"].stop(),在第1帧中,您可以将stop()定义为清除间隔的函数。

答案 1 :(得分:4)

由于所有iframe都有自己的窗口。您可以使用window.onfocuswindow.onblur。将代码放在每个iframe中。 jsfiddle

var Handler ;
window.onfocus = function(){
         Handler = window.setInterval(getStatus, 100); //start status messages

}
window.onblur = function(){

  clearInterval(Handler );
}

答案 2 :(得分:3)

确保两个iframe都隐藏在页面加载

一旦用

打开它们
$('#app2button').click(function () { 

添加javascript代码以使用

加载内容
$('#app2button').html().load()