我試過,但失敗:如何關閉由showModalDialog打開的對話框?
var win = showModalDialog('http://localhost/index.php');
win.close();
我試過,但失敗:如何關閉由showModalDialog打開的對話框?
var win = showModalDialog('http://localhost/index.php');
win.close();
當您執行showModalDialog
,整個代碼序列被阻止。您需要關閉模態窗口才能繼續,但是win
將會是null
:P
模態窗口的定義是當前函數的執行停止,直到模態窗口關閉。也就是說,showModalDialog()
的呼叫將會阻塞,直到所顯示的對話框關閉。因此,在之後,您的win.close()
將被稱爲窗口已關閉(而不是您打算的)。
你有幾個選擇:
顯示對話框作爲非模態,並在事件循環等到一定的條件得到滿足。然後,從調用函數關閉窗口。
模態對話框在適當的時候關閉。
模態對話框意味着直到關閉對話框後纔會執行下一個操作符。這就是爲什麼你放在下一行的任何東西都無法工作。
這就是模態對話框的目的 - 凍結當前窗口並從用戶那裏獲得一些強制輸入。如果你想立即關閉它,我懷疑你並不需要模態對話框。
順便說一句,showModalDialog的返回值是對話框返回代碼,而不是一個窗口變量!
通常情況下,模態對話框從內部關閉。如果你不想等待用戶的輸入,那麼在index.php代碼中必須有一些關閉它的東西。
如何從內部關閉它,你可以更具體嗎? – Mask 2009-11-25 09:43:37
你可能在index.php中有onLoad事件,它會設置一個計時器並在一段時間後調用window.close。 你想達到什麼目的?窗口閃爍並關閉?爲什麼? – 2009-11-25 12:02:31
如果你想從模態對話框內關閉它,你可以使用:
$ .trigger( 「點擊」)(,parent.document 「UI-對話框的標題欄關閉。」)
然後有什麼辦法用腳本關閉模態對話框? – Mask 2009-11-25 09:42:28
不,你不能關閉它,因爲它是模態的... – sdwilsh 2009-11-25 18:13:58
那麼,對話框可以用'window.close()'關閉它自己*,但正如@sdwilsh所說,你不能從外面做任何事情它。 – 2009-11-25 18:23:45