2013-10-05 44 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