我有一个交互式程序,用户一个接一个地调用一系列将确定的源词翻译成谷歌翻译处理的语言。用户不需要自己关闭子窗口。一旦用户根据谷歌翻译产生的翻译类型记录他的结论,程序就会立即执行此操作。我已经尝试了几个星期来解决程序报告在程序应该执行 page.close() 后无法关闭某个窗口的问题。我现在接近解决方案,我认为,浏览器需要一些时间来关闭,然后才能检测到窗口已关闭。本质上仍然不符合我的意愿的代码是
function loadpage() {
page=window.open("url-code for calling specific translation by GT", "GT", "scrollbars=1, resizable=1, height=400, top=200, left=300, width=400", true);
}
function crucial() {
page.close();
setTimeOut(function() {
if (page.closed) {
alert("succesful closing");
} else {
alert("The window can't be closed!");
}
}, 5000);
}
唉!两个警报都没有出现。在某些情况下,根据延迟时间 ?,窗口会关闭。我从 Bergi 那里得到的通过 if (!page.closed) 检查延迟函数内部的建议不起作用。有效的似乎必须满足以下条件: 1. 声明 setTimeOut 函数。2. 以 function() {alertcheck()} 格式创建函数优先(延迟时间似乎无关紧要;无论如何它甚至可以使用 0。)
var timeoutID;
function preferential() {
timeoutID = window.setTimeout(function(){alertcheck()}, 0);
}
function alertcheck() {
if (page.closed) {
alert("succesful closing");
} else {
alert("The window could not be closed!");
}
}
为什么它是这样的,我很感兴趣。至少我希望,读者可以重复这个实验,得到同样的结果。