2010-06-10 100 views
0

我有一个页面位于x.com。在此页面上有一个按钮,点击该按钮后,它将启动一个新窗口(使用javascript的window.open()方法)到位于z.com的页面。弹出窗口会执行一些操作,然后根据弹出窗口中定义的一些参数将原始窗口(opener,x.com)重定向到不同的页面。Iframe/Popup重定向打开窗口

这适用于Firefox/Chrome浏览器,但不适用于IE浏览器。在IE中(特别是8,但我相信7也有这个问题)原始窗口(opener)没有重定向。相反,会出现一个新窗口,并将该窗口重定向。

我已经尝试了很多不同的方法来尝试并使其工作,包括将弹出窗口更改为加载到页面上的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');" /> 

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

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

In Fir efox/Chrome,这工作正常。在IE中,当domainB.com尝试在opener(也就是父窗口,即domainA.com)上设置location.href时,它会打开一个新窗口,这不是我想要的。我希望它将开启者(父窗口)重定向到我指定的URL。

巴拉

+1

你能显示一些代码吗? – 2010-06-10 21:01:39

+0

检查我的编辑代码。 – Bara 2010-06-10 21:20:57

回答

0

我最终通过执行以下操作以解决该问题:

我添加一个iFrame到我的主页。 iFrame与我的弹出窗口位于同一个域中。 iFrame包含一个按钮,点击后将启动弹出窗口。

弹出窗口确实是这样,然后将iFrame的哈希标签更改为#change(所以url将www.whatever.com/iframe.aspx#change)。在iFrame的javascript中,我有一个循环来检查散列是否显示“change”,如果是,它会将父页面重定向到我想要的位置。这工作很好。

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

Bara

3

您好我通过执行以下 ,而不是使用window.opener.location =解决我的问题 “......

使用window.opener.document.location =” 网址”这为我工作。

另一件事是确保你是不是从http重定向到HTTPS这也将导致其破裂。

干杯

+0

获取权限被拒绝消息:( – Binod 2013-12-12 16:22:15