Выберите и сфокусируйте уже существующее окно - PullRequest
4 голосов
/ 24 августа 2011

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

Вместо этого я генерирую всплывающее окно, когда пользователь нажимает кнопку «Подтвердить заказ», но это скрывает страницу 3DSecure, котораяОформление заказа перенаправляется до завершения заказа.

Чтобы противодействовать этому, я создаю всплывающее окно, когда пользователь нажимает кнопку «Подтвердить заказ», но мгновенно перефокусирую главное окно;всплывающее окно, если хотите.Я планирую перефокусировать это новое окно со страницы успеха заказа.

Проблема в том, что я не могу найти способ получить объект для существующего всплывающего окна, чтобы я мог сосредоточиться на нем.если я создаю окно, используя window.open(url,windowName,options), есть ли способ, которым я могу ссылаться на это с другой страницы?Что-то вроде window.load(windowName) было бы идеально.

Ответы [ 2 ]

4 голосов
/ 24 августа 2011

Подпись window.open выглядит следующим образом.

var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]);

MDN отмечает, что

Если окно с именем strWindowName уже существует, тогда strUrl загружается в существующее окно. В этом случае возвращаемое значение Метод - это существующее окно, а strWindowFeatures игнорируется. Предоставление пустой строки для strUrl - это способ , чтобы получить ссылку на открыть окно по имени без изменения местоположения окна.

Так что это должно сработать для вас.

window.open('', 'windowName', '');

Согласно MDN при каждом открытии окна создается ссылка на него,

var windowObjectReference = window.open("http://www.google.com", "popup", "width=500,height=500");

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

if(windowObjectReference != null || !windowObjectReference.closed) {
    windowObjectReference .focus();
}

1 голос
/ 24 августа 2011

Это сложно, но работает на Chrome. Сначала откройте окно:

window.open('/test', 'testw', '');

Другая ссылка (даже на другой странице) открывает «страницу» в том же окне, передавая то же имя окна. URL-адрес JavaScript (так что это скорее взлом):

window.open('javascript:void window.focus()', 'testw', '');

http://jsfiddle.net/pimvdb/KeHtp/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...