Как определить, заблокировано ли всплывающее окно на другом домене в 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? Какую страницу вы пытаетесь загрузить во всплывающем окне?

Другие вопросы по тегам