iframe / Popup重定向开启窗口

时间:2010-06-10 20:58:25

标签: javascript html iframe popup window.open

我的网页位于x.com。在此页面上有一个按钮,当单击该按钮时,将启动一个新窗口(使用javascript的window.open()方法)到位于z.com的页面。弹出窗口做了一些事情,然后根据弹出窗口中定义的一些参数将原始窗口(opener,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。

巴拉

2 个答案:

答案 0 :(得分:3)

您好我通过以下方式解决了我的问题 而不是使用window.opener.location =“....

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

另一件事是确保你没有从http重定向到https 这也会导致它破坏。

干杯

答案 1 :(得分:0)

我最后通过执行以下操作来解决它:

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

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

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

巴拉