簡體   English   中英

window.showModalDialog與window.open

[英]window.showModalDialog vs. window.open

當你想使用window.showModalDialog函數時會出現什么情況? 你可以使用window.open函數和幾個刪除一些chrome(導航,地址欄等等)的參數完全相同的接縫。

你想什么時候使用window.showModalDialog和window.open?

自從這個問題最初被問到這已經過了幾年,事情已經發生了一些變化。 window.showModalDialog現已正式標准化為HTML5的一部分,並且在IE,Firefox 3 +,Chrome( 盡管有bug )和Safari 5.1+中受支持。

不幸的是, window.showModalDialog仍然受到許多問題的困擾。

  • 默認情況下,模式對話框在Firefox,Chrome和Safari中被阻止為彈出窗口。
  • 在Chrome中的模態對話框是越野車,並沒有真正的模式-見http://code.google.com/p/chromium/issues/detail?id=16045http://code.google.com/p/chromium / issues / detail?id = 42939
  • 當模式對話框啟動時,除Chrome之外的所有瀏覽器都會阻止用戶與整個窗口(收藏夾,瀏覽器控件,其他選項卡等等)進行交互。
  • 他們很難調試,因為他們在等待模式對話框完成時暫停父窗口中的JavaScript執行。
  • 沒有移動瀏覽器支持window.showModalDialog

因此,使用window.showModalDialog仍然不是一個好主意。 如果你需要打開的窗口是模態的(即用戶在處理對話框之前無法與頁面的其余部分交互)我建議使用jQuery UI的對話框插件

window.open將適用於非模態窗口,但我會堅持使用jQuery UI的對話框,因為打開新窗口往往會惹惱用戶。

如果您有興趣,我會在我的博客上更詳細地寫下這一點 - http://tjvantoll.com/2012/05/02/showmodaldialog-what-it-is-and-why-you-should-never-use-它/

模態對話框是父級打開的對話框,在關閉對話框之前不允許您將焦點放在父級上。

可以使用模式對話框來登錄表單,編輯表單等,您希望有一個彈出窗口用於用戶交互但不允許用戶返回打開彈出窗口的窗口。

作為旁注,我相信只有Internet Explorer實現了window.showModalDialog ,所以這種限制了你對它的使用。

showModalDialog()目前正在標准化為HTML5的一部分。 第三個參數(對於其他選項)在HTML5版本中不存在,並且(安全地)被Safari和Chrome忽略。

http://dev.w3.org/html5/spec//user-prompts.html#dialogs-implemented-using-separate-documents

請注意,Chrome 2中存在一個錯誤,導致showModalDialog()無法正常加載。 出現彈出窗口,但內容從不加載。

避免使用showModalDialog()的另一個原因。

showModalDialog()在Internet Explorer中運行良好,Firefox(3及以上版本)在Chrome中運行但彈出窗口不是模型(可以轉到父窗口)

請注意,雖然您可以從任何彈出窗口顯示模態,但您無法在某些瀏覽器(IE,Safari)中使用模型對話框中的window.open。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM