2010-06-10 3 views
0

У меня есть страница, расположенная на x.com. На этой странице есть кнопка, которая при нажатии на нее запустит новое окно (используя метод javascript window.open()) на страницу, расположенную на z.com. Всплывающее окно выполняет несколько действий, затем перенаправляет исходное окно (открыватель, x.com) на другую страницу на основе некоторых параметров, определенных во всплывающем окне.Открывающее окно для переадресации iframe/Popup

Это прекрасно работает в Firefox/Chrome, но не в IE. В IE (8, в частности, но я считаю, что 7 также имеет эту проблему) исходное окно (открыватель) не перенаправлено. Вместо этого появляется новое окно, и окно THAT перенаправляется.

Я пробовал много разных методов, чтобы попытаться заставить это работать, в том числе изменение всплывающего окна на iframe, загруженное на страницу, и функция на открывателе, которая вызывает всплывающее/iframe-вызов. Проблема заключается в том, что IE отказывается разрешать междоменные сайты разговаривать друг с другом через javascript.

Есть ли способ обойти это? Как я могу заставить родительское окно перенаправить на страницу на основе параметров во всплывающем или iframe?

EDIT:

Вот код для образцов:

На странице на 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 пытается установить location.href на открытии (также как родительское окно, которое является domainA.com), вместо этого открывается новое окно, которое не то, что я хочу. Я хочу, чтобы он перенаправил открыватель (родительское окно) на указанный мной URL.

Бара

+1

Вы можете показать код? –

+0

Проверьте мое редактирование для кода. – Bara

ответ

0

Я в конечном итоге его разрешения, выполнив следующие действия:

Я добавил IFrame к моей главной странице. IFrame находится в том же домене, что и мое всплывающее окно. IFrame содержит кнопку, которая при нажатии будет запускать всплывающее окно.

Всплывающее окно делает это, а затем изменяет хэш-тег iFrame на что-то вроде #change (поэтому URL-адрес будет www.whatever.com/iframe.aspx#change). В javascript iFrame у меня есть цикл, который проверяет хеш, чтобы увидеть, говорит ли он «изменить», и если это так, он перенаправит родительскую страницу туда, где захочу. Это прекрасно работает.

Поскольку я не хотел бесконечного цикла на каждой странице, я делаю проверку браузера, так что это относится только к IE. Для всех других браузеров я просто использую window.opener, который отлично работает.

Bara

3

Привет я решил мою проблему, выполнив следующие действия вместо использования window.opener.location = "....

Использование window.opener.document.location =" URL ». Это работает для меня.

Другое дело, чтобы убедиться, что вы не перенаправлять из HTTP в HTTPS это также приведет к его поломке.

Приветствия

+0

Получение разрешения отклонено сообщение :( – Binod