【问题标题】:How can a popup window change the page location of its parent cross domain?弹出窗口如何更改其父跨域的页面位置?
【发布时间】:2011-09-06 00:36:40
【问题描述】:

我希望有人可以帮助我。

我有一个网站使用 javascript 打开另一个域中存在的弹出窗口。

在弹出窗口中,我想要一个“立即预订”链接/按钮,它将父网站的页面更改为它的 booking.htm 页面,然后弹出窗口关闭。

不可能将弹出窗口托管在与主网站相同的域中。

我尝试了两种代码类型来更改页面位置...

1)

window.opener.location.href="booking.htm"

2)

window.opener.window.location.href="booking.htm"

在 Firefox 6 和 Chrome 12 中 - 1 和 2 都可以完美运行。

在 Internet Explorer 8 中 - 方法 1 导致父窗口抛出一个黄色弹出栏,为用户提供临时允许弹出窗口的选项。方法二在弹窗中给出“Error on Page”,并给出解释“Permission Denied”。

在 Opera 11.51 中 - 这两种方法都会在错误控制台中抛出“未捕获的异常:ReferenceError:安全错误:试图写入受保护的变量”的错误

我很确定问题与主网站和弹出窗口位于不同的域有关,但再次将它们托管在同一个域中不是一种选择。

所以我问..

  • 有没有办法让弹出窗口上的代码更改其页面位置 当他们在不同的域上时,父级可以跨浏览器工作吗?
  • 为什么 Internet Explorer 在方法 1 中抛出黄色弹出栏,当 我没有使用window.open,我使用的是location.href?即我是 要求家长更改位置而不是打开新的弹出窗口。
  • 我是否错过了使用某种“target=”代码?
  • 我需要使用某种“return false”吗?还是什么?

[我在这里有一个示例,但现在我已将其删除,因为我设置了一个额外的网络托管帐户以显示跨域问题的实际效果。但我现在不需要额外的虚拟主机,所以我取消它以省钱。给您带来的不便敬请谅解]

感谢您阅读本文,即使您帮不上忙。

戴夫

【问题讨论】:

    标签: javascript popup parent window.opener


    【解决方案1】:

    你不能做这个跨域。在子弹出页面中重定向到父域并且该页面可以简单地刷新/重定向打开器,或者您可以访问它,因为它将是同一个域。

    【讨论】:

    • 嗨,Sonesh。不同的浏览器以不同的方式处理这个问题很奇怪,但无论如何你的建议解决了这个问题,所以非常感谢你。大卫
    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 2012-07-23
    • 2019-06-12
    • 1970-01-01
    相关资源
    最近更新 更多