Iframe / Всплывающее окно перенаправления всплывающих окон - PullRequest
0 голосов
/ 11 июня 2010

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

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

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

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

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/';

В Firefox / Chrome это работает нормально. В IE, когда domainB.com пытается установить файл location.href на открывателе (он же родительское окно, которое является domainA.com), он вместо этого открывает новое окно, а это не то, что мне нужно. Я хочу, чтобы он перенаправлял средство открытия (родительское окно) на указанный мной URL.

Бар

Ответы [ 2 ]

3 голосов
/ 21 июня 2010

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

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

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

Cheers

0 голосов
/ 21 июня 2010

В итоге я решил ее, выполнив следующее:

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

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

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

Бар

...