Разблокировать всплывающее окно window.open? - PullRequest
0 голосов
/ 11 января 2011

Из-за ограничений действительно неуклюжей CMS я не могу использовать

target="_blank"

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

window.open ("http://www.NewPage.com/");
window.location = "http://www.OldPage.com/";

Конечно, большинство браузеров блокируют метод window.open ... так, каковы мои варианты? Конечно, есть некоторые хитрые хитрости Javascript, чтобы обойти это.

Ответы [ 2 ]

1 голос
/ 11 января 2011

Нет вариантов. Вы не можете этого сделать, и на то есть веская причина.

Браузеры разрешат window.open() работать только тогда, когда вызывающий его код обрабатывает событие, такое как «щелчок». В этом случае браузер предполагает, что на странице есть интерактивный элемент и пользователь знает, что будет всплывающее окно. Если страница просто вызывает window.open() для нового окна из некоторого контекста, такого как прямой код скрипта, или в обработчике события «готово» или «загрузить», или в обратном вызове XMLHttpRequest, то браузер предполагает, что всплывающее окно может быть чем-то неприятным. 1005 *

В некоторых браузерах пользователь может ослабить эти правила, но ваш код не может этого заставить.

0 голосов
/ 11 января 2011

Вероятно, вы можете просто вставить iframe на страницу и расположить его поверх всего, но я бы не стал этого рекомендовать.

Браузер будет контролировать, разрешено или нет window.open в конце дня, поэтому я не стал бы пытаться найти решение.

...