2013-10-05 43 views
0

我有一个交互式程序,用户可以一个接一个地调用一系列将明确的源词翻译成在Google翻译中处理的语言。 用户不需要亲自关闭子窗口。只要用户根据谷歌翻译产生的翻译类型注释他的结论,程序就会执行。 我已经尝试了几个星期来解决程序报告在程序执行page.close()之后无法关闭certian窗口的问题。 我现在接近解决方案,我想,浏览器需要一段时间才能关闭,只有在这之后才能检测到该窗口已关闭。 本质上仍然不符合我的愿望代码读取浏览器需要多长时间关闭子窗口?

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.创建函数的格式功能优先(){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!"); 
} 
} 

为什么它就像我感兴趣的一个许多。至少我希望,读者可以用相同的结果重复这个实验。

回答

0

的程序报告一个certian窗口无法关闭后的程序应该已经执行page.close()

关闭的窗口无法关闭。你应该总是使用

if (!page.closed) 
    page.close(); 
+0

你说什么是显而易见的,当我满足if(!page.closed)条件时,我得到期望的结果,而不是条件if(page。关闭)。 然后,你能告诉我什么是 功能至关重要的逻辑区别是什么(){ \t page.close(); (page.closed) \t if(page.closed)\t \t alert(“succesful closing”);其他{\t} \t \t alert \t} } 和 功能crucial2(){ \t page.close(); \t if(!page.closed){ \t alert(“La fenestro ne povis esti fermita!”);其他{ \t \t警报(“成功关闭”); \t} \t } – user2772060

+0

我没有看到任何,但我的回答建议把'page.close()'语句本身放在if条件中。 – Bergi