【问题标题】:window.open not working when attached on onload event in chrome and safari在 chrome 和 safari 中附加 onload 事件时 window.open 不起作用
【发布时间】:2025-12-19 02:10:12
【问题描述】:

我在表单的 onload 事件上附加了一些 javascript。此脚本包含 window.open。虽然这在所有浏览器中都可以正常工作 window.open 不会打开新窗口,也不会在 google chrome 和 firefox 中给出错误消息。

我想先检查屏幕分辨率,如果它小于 1024,然后我会在没有菜单、工具栏等的新窗口中打开它,以便用户有更多的工作空间。

【问题讨论】:

    标签: asp.net javascript


    【解决方案1】:

    这是一项功能,而不是错误! :)

    还记得上世纪 90 年代弹出式窗口惹恼了所有人吗?好吧,由于 MASSIVE 滥用该 JavaScript 行为,现在打开窗口的唯一方法是直接用户交互;就像点击一样。

    【讨论】:

    • “回到 90 年代”?这些恐怖仍然存在,我的朋友!
    • 但是大多数浏览器都支持这一点,我想在 safari 和 chrome 中做到这一点无论如何也可以实现这一点
    • 如果它被其他浏览器“支持”,应该更新这些浏览器以阻止未请求的窗口。
    • 其他浏览器不支持 — 甚至 IE,在其较新的版本中,现在都带有弹出窗口阻止程序。算了。
    • 我认为 Webkit 浏览器误判了这一点,应该在“允许弹出窗口”上保留默认选项。我会选择是否需要我正在访问的网站的内容。这不是由浏览器决定的。
    【解决方案2】:

    如果您有正当理由打开另一个窗口,请将click 事件附加到标记为button 的标签上,以便正确指示您将打开一个窗口。如果您的用户想要打开窗口,他们会这样做,并且它会正确地通过除了最愚蠢的弹出窗口阻止程序之外的任何内容。如果他们不想,你一开始就不应该打开窗户。

    【讨论】:

    • 但是您不能更改客户机器上的设置。不要依赖人们关闭他们的弹出窗口阻止程序,这样您就可以避免通知他们您将在没有他们请求的情况下打开一个新窗口!
    • Chrome 发生了一些奇怪的事情。如果您创建一个页面,其 onload 或 jQ 就绪触发 window.open 并且该窗口对打开器执行某些操作(尝试使其更改颜色),请注意即使未显示子窗口,js 也会执行!!! ?啊!?
    最近更新 更多