任何人都可以告诉我这些功能之间的区别吗?
答案 0 :(得分:14)
window.open
打开一个新的独立窗口。它在某些方面适用于大多数浏览器(虽然弹出窗口阻止程序经常阻止它们或需要额外的用户确认)。可以使用window.opener
属性访问打开窗口的文档。
showModalDialog
会打开一个与当前页面关联的对话框。在对话框关闭之前,不可能在页面上执行任何操作。 (MSDN docs)
两者之间最重要的区别是showModalDialog
会暂停JavaScript的执行,直到对话框关闭,并且可以返回return value(至少在Internet Explorer中)。在那,它的工作原理类似于到confirm()
对话框。相反,window.open
“异步”打开一个窗口:即使新窗口加载,脚本执行也会立即继续。
可以从对话框中访问父文档,其中包含一些我现在无法记住的名称,但它与window.open
不同。
还有一点要注意的是,根据我的经验,模态对话框很难刷新,因为它们似乎受制于与普通页面不同的缓存规则。 F5键无法刷新页面。一种解决方法是每次(pagename.htm?random=1203402920
)
一般来说,看作showModalDialog
是一项专有功能,其功能无法轻易移植到其他浏览器,通常最好不要使用它。
答案 1 :(得分:2)
来自MSDN
模态对话框保留输入 开放时关注
这意味着当它打开时,用户无法获得对其打开的窗口的关注。 Window.Open将创建一个新窗口。
答案 2 :(得分:1)
Showmodaldialog将完全按照它所说的做,显示一个模态对话框,即用户在返回原始窗口之前需要先关闭的窗口,window.open将打开一个新窗口,但用户可以随意忽略它并随时返回原始窗口。