当你想使用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=16045&http://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
,因此限制了它的使用.