window.showmodaldialog和window.open之间的区别

时间:2010-08-20 09:35:45

标签: javascript

任何人都可以告诉我这些功能之间的区别吗?

3 个答案:

答案 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

对加载的URL使用随机添加

一般来说,看作showModalDialog是一项专有功能,其功能无法轻易移植到其他浏览器,通常最好不要使用它。

答案 1 :(得分:2)

来自MSDN

  

模态对话框保留输入   开放时关注

这意味着当它打开时,用户无法获得对其打开的窗口的关注。 Window.Open将创建一个新窗口。

答案 2 :(得分:1)

Showmodaldialog将完全按照它所说的做,显示一个模态对话框,即用户在返回原始窗口之前需要先关闭的窗口,window.open将打开一个新窗口,但用户可以随意忽略它并随时返回原始窗口。