首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >window.showModalDialog与window.open

window.showModalDialog与window.open
EN

Stack Overflow用户
提问于 2009-04-08 01:33:27
回答 6查看 30K关注 0票数 12

当你想要使用window.showModalDialog函数时,有什么情况?看起来你可以用window.open函数和几个参数来移除一些chrome (导航,地址栏等),做同样的事情。

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-04-08 01:41:17

模式对话框是由父级打开的对话框,在关闭对话框之前不允许您将焦点放在父级上。

可以对登录表单、编辑表单等使用模式对话框,您希望有一个弹出式窗口用于用户交互,但不允许用户返回到打开弹出式窗口的窗口。

顺便说一句,我认为只有Internet Explorer实现了window.showModalDialog,所以这就限制了你对它的使用。

票数 10
EN

Stack Overflow用户

发布于 2012-07-06 08:53:45

自从这个问题最初被提出以来,已经有几年了,从那时起,情况发生了一些变化。window.showModalDialog现在正式成为standardized as part of HTML5,并在IE、火狐3+、Chrome (albeit buggy)和Safari 5.1+中得到支持。

不幸的是,window.showModalDialog仍然受到许多问题的困扰。

默认情况下,

  • 模式对话框在火狐、Chrome和Safari中作为弹出窗口被阻止。
  • Chrome中的模式对话框有错误且不是真正的模式-请参阅除Chrome之外的http://code.google.com/p/chromium/issues/detail?id=16045和Safari浏览器阻止用户与整个窗口(收藏夹、浏览器控件、其他选项卡等)进行交互。当模式对话框打开时。
  • 它们很难调试,因为它们会在等待模式对话框完成时暂停父窗口中的JavaScript执行。
  • 没有移动浏览器支持pain

因此,使用window.showModalDialog仍然不是一个好主意。如果您需要打开的窗口是模态的(即用户在处理对话框之前无法与页面的其余部分进行交互),我建议您使用jQuery UI's dialog plugin

window.open将适用于非模式窗口,但我会坚持使用jQuery UI的对话框,因为打开新窗口往往会让用户感到厌烦。

如果你感兴趣,我会在我的博客- http://tjvantoll.com/2012/05/02/showmodaldialog-what-it-is-and-why-you-should-never-use-it/上详细介绍这一点。

票数 19
EN

Stack Overflow用户

发布于 2012-04-11 21:29:11

showModalDialog()目前正在作为HTML5的一部分进行标准化。第三个参数(用于附加选项)在HTML5版本中不存在,并且(安全地)被Safari和Chrome忽略。

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/728196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档