0

我有一个位于 x.com 的页面。此页面上有一个按钮,单击该按钮将启动一个新窗口(使用 javascript 的 window.open() 方法)到位于 z.com 的页面。弹出窗口做了一些事情,然后根据弹出窗口中定义的一些参数将原始窗口(打开器,x.com)重定向到不同的页面。

这在 Firefox/Chrome 中运行良好,但在 IE 中不行。在 IE(特别是 8,但我相信 7 也有这个问题)中,原始窗口(开启器)没有被重定向。相反,会出现一个新窗口并重定向该窗口。

我尝试了许多不同的方法来尝试让它工作,包括将弹出窗口更改为页面上加载的 iframe,并在弹出窗口/iframe 调用的开启器上具有一个函数。问题似乎是 IE 拒绝允许跨域站点通过 javascript 相互通信。

有没有解决的办法?如何让父窗口根据弹出窗口或 iframe 中的参数重定向到页面?

编辑:

以下是一些示例代码:

在 domainA.com 的一个页面中,我有这个:

<img src='/images/test.png' onclick="window.open('http://www.domainB.com/item.aspx', 'name', 'width=100,height=100,menubar=no,status=no,toolbar=no');" />

在 domainB.com 上的 item.aspx 中,我在 javascript 中有这个:

opener.location.href = 'http://www.somethingelse.com/';

在 Firefox/Chrome 中,这可以正常工作。在 IE 中,当 domainB.com 尝试在开启程序(也称为父窗口,即 domainA.com)上设置 location.href 时,它会打开一个新窗口,这不是我想要的。我希望它将打开器(父窗口)重定向到我指定的 URL。

巴拉

4

2 回答 2

3

嗨,我通过执行以下操作解决了我的问题,而不是使用 window.opener.location = "....

使用window.opener.document.location = "url"。这对我有用。

另一件事是确保您没有从 http 重定向到 https,这也会导致它中断。

干杯

于 2010-06-21T14:12:41.550 回答
0

我最终通过执行以下操作解决了它:

我在我的主页上添加了一个 iFrame。iFrame 与我的弹出窗口位于同一域中。iFrame 包含一个按钮,单击该按钮将启动弹出窗口。

弹出窗口完成了它,然后将 iFrame 的哈希标记更改为类似 #change 的内容(因此 url 将是 www.whatever.com/iframe.aspx#change)。在 iFrame 的 javascript 中,我有一个循环来检查哈希以查看它是否显示“更改”,如果是,它将父页面重定向到我想要的任何地方。这很好用。

因为我不想在每个页面上都出现无限循环,所以我进行了浏览器检查,以便这只适用于 IE。对于所有其他浏览器,我只使用 window.opener 工作正常。

巴拉

于 2010-06-21T16:11:48.997 回答