我正在使用 javascript window.open 方法打开假设 http://www.google.com [它总是会是一些外部 url]
我已将窗口对象的引用存储在一个变量中,问题是该变量在父页面上永远不会为 null,而且我无法提醒用户弹出窗口已关闭。
这是代码
var winFB; var winTWt; var counterFB = 0; var counterTWT = 0; var timerFB; function openFB() { if (counterFB == 0) { winFB = window.open("http://www.google.com"); counterFB = 1; } if (counterFB > 0) { alert(winFB); if (winFB == null) { counterFB = 0; clearTimeout(timerFB); alert("Window Closed"); } } timerFB= setTimeout("openFB()", 1000); }
我不能在弹出窗口/子窗口上放置任何 javascript 代码。
希望有人能帮我解决这个问题
最佳答案
window 变量在关闭时不会被清空,但是它的 .closed
property是 true
,因此只需将检查更改为该属性,如下所示:
var winFB;
var winTWt;
var counterFB = 0;
var counterTWT = 0;
var timerFB;
function openFB() {
if (counterFB == 0) {
winFB = window.open("http://www.google.com");
counterFB = 1;
}
if (counterFB > 0) {
if (winFB.closed) {
counterFB = 0;
clearTimeout(timerFB);
alert("Window Closed");
}
}
timerFB = setTimeout(openFB, 1000);
}
另请注意 setTimeout()
改变,只要有可能(几乎总是)传递一个函数而不是一个字符串,你在范围界定方面的问题就会少很多。
关于子弹出窗口关闭时父页面上的javascript警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4254865/