【问题标题】:Is it a bad idea to use window.open and try to communicate between windows?使用 window.open 并尝试在窗口之间进行通信是一个坏主意吗?
【发布时间】:2010-01-31 21:40:59
【问题描述】:

我正在开发一个网页,该网页将具有 google-reader 类型的内容滚动列表,我想在新窗口中单击该内容时打开该内容。问题是我真的希望能够从新打开的窗口之一更新滚动列表。

例如;我正在查看我的网页上的待售产品列表,用户单击其中一个产品,打开一个新页面,显示他们单击的产品的详细信息。新页面还包括指向各种产品的链接(比如说茶杯)——当用户点击“给我看一些茶杯”时,我希望将原始产品列表重定向到显示所有茶杯和焦点的页面转移到这个窗口(在另一个窗口/选项卡中打开产品特定页面)

这是一个可怕的想法吗?我会在较新的浏览器中遇到弹出窗口阻止程序或安全策略的问题吗?这通常被认为是一种糟糕的设计模式吗?

感谢您的任何意见。

【问题讨论】:

    标签: javascript html security popup


    【解决方案1】:

    由于弹出窗口拦截器,弹出窗口现在是一件微妙的事情。如果可能的话,最好使用像JQuery dialog 这样的内联对话框——当然,它们都位于一个页面内。但它们是可调整大小的,可以做成模态的等等。

    除此之外,只要您的所有窗口都来自同一个域,我认为跨窗口通信没有任何问题,只要您只有一个父级可以打开所有窗口并且可以充当窗口内通信中的代理(弹出窗口只知道window.opener)。

    【讨论】:

      【解决方案2】:

      好的,所以要回答我自己的问题(在我真正挖掘答案之前,我需要停止提问),这确实是一个非常糟糕的主意 - 我知道这感觉不对。基本问题是它破坏了后退按钮,这可能会通过一些 JS 的优点来解决,但从可访问性的角度来看,这仍然是一个坏主意。我的猜测是谷歌阅读器默认这样做的原因是它明确地是一个用于查看其他页面的界面,所以用户不应该对在新窗口中打开链接感到惊讶。

      一些感兴趣的人阅读该主题:

      Top 10 Web Design Mistakes of 1999

      W3C Mailing list discussion of a.target deprecation

      【讨论】:

        猜你喜欢
        • 2023-03-10
        • 2015-09-11
        • 2020-08-07
        • 1970-01-01
        • 1970-01-01
        • 2020-05-24
        • 2014-01-12
        • 2015-07-23
        • 1970-01-01
        相关资源
        最近更新 更多