我的网页位于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。
巴拉
答案 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工作正常。
巴拉