父页面弹出窗口以iframe的方式加载子页面的数据,当窗口关闭时,子页面的js计时器却还在运行,导致页面卡顿阻塞。下面是我在实际编程中使用的方法:
一、子页面中的计时器:
var timer1 =setInterval("refreshDataAll()", 800);
二、父页面中关闭子页面计时器的方法:
var ss = "crossingVedio_page.html?time=" + new Date().getTime();
$('#crossingVedio_win').window({
title: '路口视频',
width: 1150,
height: 778,
closed: true,
cache: false,
maximizable: false,
minimizable: false,
collapsible: false,
resizable: false,
content: "<iframe id='cvp' scrolling='no' frameborder='0' src='" + ss + "' style='width:600px; height:300px; display:block;'></iframe>",
modal: true
});
$('#crossingVedio_win').window({
onBeforeClose:function(){
//三种方法:
//第一种:使用window最外层数据包,类似键值对一样,将子页面窗口在子页面中赋值,如:window["subwin:]=window;这样就将子页面赋值给了windows["subwin"],然后使用下列方法关闭计时器。
//window["subwin:].clearInterval(window["subwin:]["timer1"]);
//jquery方法:
//var subwin=$("#cvp")[0].contentWindow;
//subwin.clearInterval(subwin["timer1"]);
//js方法:
var subwin=document.getElementById("cvp").contentWindow;//获取子页面窗口
subwin.clearInterval(subwin["timer1"]);//取到子页面窗口中的计时器执行subwin.clearInterval()方法
}
}
首先要给iframe定义一个id,然后在窗口的onBeforeClose事件中关闭子页面的计时器。
秋风写于淄博,业务联系与技术交流:Q375172665