Как определить, заблокировано ли всплывающее окно на другом домене в Chrome?
Вы можете определить, было ли всплывающее окно заблокировано в Chrome, с помощью решений этого вопроса: Определить заблокированное всплывающее окно в Chrome
Тем не менее, кажется, что решения обнаруживаются - это всплывающее окно для страницы в том же домене. Мне было интересно, есть ли способ определить, было ли заблокировано всплывающее окно для страницы в другом домене?
var newWindow = window.open('http://www.google.com/'); // this domain is something.com
if (newWindow) {
setTimeout(function() {
// Is there a way to detect if newWindow was blocked?
}, 500);
}
1 ответ
Вы будете связаны всеми обычными политиками происхождения, и я бы рекомендовал ознакомиться с ними напрямую: http://en.wikipedia.org/wiki/Same_origin_policy. Короче говоря, вы пытаетесь установить междоменную связь, что запрещено моделью безопасности браузера. Чтобы обойти это, существуют серверные прокси, JSONP, Flash, document.domain (но только если это два разных субдомена), и множество хаков, которые работают с переменным успехом в зависимости от ваших требований к поддержке и того, что именно вы пытаюсь сделать.
Можете ли вы рассказать нам больше о требованиях поддержки вашего браузера? Вы можете использовать XHR Level 2? Какую страницу вы пытаетесь загрузить во всплывающем окне?