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

Ant*_*ops 2 javascript

谁能告诉我这些功能之间的区别?

Pek*_*ica 14

window.open打开一个新的独立窗口.它在某些方面适用于大多数浏览器(虽然弹出窗口阻止程序经常阻止它们或需要额外的用户确认).可以使用window.opener属性访问打开窗口的文档.

showModalDialog打开一个绑定到当前页面的对话框.在对话框关闭之前,不可能在页面上执行任何操作.(MSDN文档)

两者之间最重要的区别是showModalDialog在对话框关闭之前暂停JavaScript的执行,并且可以返回返回值(至少在Internet Explorer中).在那里,它的工作方式类似于confirm()对话框.相反,window.open打开一个"异步"窗口:即使在新窗口加载时,脚本执行也会立即继续.

可以从对话框中访问父文档,其中包含一些我现在无法记住的属性,但它与之不同window.open.

还有一点需要注意的是,根据我的经验,模态对话框非常难以刷新,因为它们似乎受制于与普通页面不同的缓存规则.F5键无法刷新页面.一种解决方法是每次使用随机添加到加载的URL(pagename.htm?random=1203402920)

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