1

我需要一個關於ShowModalDialog和setTimeout的函數,所以我測試了Google Chrome中的彈出窗口 和ModalDialog,並且出現了一些問題。 有顯示在頁面load.one由winodw.open開了兩個彈出窗口(), 另一個是由window.showmodaldialog()這樣打開:兩個彈出窗口被打開在chrome中使用setTimeout和showModalDialog會阻止選項卡

setTimeout(function(){window.open("PopupWindow.html","_blank","")},100); 
setTimeout(function(){window.showModalDialog("ModalDialog.html","","")},100)}; 

後,我點擊PupupWindow.html上的按鈕。它會調用 的功能如下:

function test() 
{ 
    setTimeout(function(){alert("test");},1000); 
} 

這是谷歌瀏覽器14做工精細。將Google Chrome更新到版本19, 後,在調用test()之前PopupWindow.html將掛起,直到ModalDialog.html關閉。 請告訴我爲什麼這個案例在Google Chrome 19上遭到破壞,或者在Google Chrome 19上以任何方式執行showModalDialog 和window.open()19.感謝您的幫助。

回答

0

瀏覽器的新版本實際上是表現出正確的行爲。在Safari和Firefox中,我也會遇到同樣的情況。

模式對話框就其本質都應該防止用戶與應用程序的其餘部分交互,直到他們完成了模態對話框。

Chrome瀏覽器已通過若干問題與不正確處理這個困擾。對於一些示例,參見http://code.google.com/p/chromium/issues/detail?id=4202,http://code.google.com/p/chromium/issues/detail?id=16045http://code.google.com/p/chromium/issues/detail?id=42939。看起來,如果你遇到不同的行爲,他們可能終於開始清理其中的一部分了。

一般使用window.showModalDialog應避免一些,我在這裏詳細的原因 - http://tjvantoll.com/2012/05/02/showmodaldialog-what-it-is-and-why-you-should-never-use-it/

如果你需要一個模式對話框我強烈推薦jQuery UI's dialog plugin

相關問題