Мне известны методы javascript, чтобы определить, заблокировано ли всплывающее окно в других браузерах (как описано в ответе на этот вопрос). Здесь основной тест:
var newWin = window.open(url);
if(!newWin || newWin.closed || typeof newWin.closed=='undefined')
{
//POPUP BLOCKED
}
Но это не работает в Chrome. Раздел "POPUP BLOCKED" никогда не достигается, когда всплывающее окно заблокировано.
Конечно, тест работает до такой степени, что Chrome фактически не блокирует всплывающее окно, но открывает его в крошечном свернутом окне в правом нижнем углу, в котором отображаются "заблокированные" всплывающие окна.
Что бы я хотел сделать, так это узнать, заблокировано ли всплывающее окно блокировщиком всплывающих окон Chrome. Я стараюсь избегать обнюхивания браузеров в пользу обнаружения функции. Есть ли способ сделать это без взлома браузера?
Изменить. Я попытался использовать newWin.outerHeight
, newWin.left
и другие подобные свойства для этого. Google Chrome возвращает все значения позиции и высоты как 0, когда всплывающее окно заблокировано.
К сожалению, он также возвращает те же значения, даже если всплывающее окно фактически открыто в течение неизвестного времени. После некоторого магического периода (пару секунд в моем тестировании) информация о местоположении и размере возвращается как правильные значения. Другими словами, я все еще не ближе к этому. Любая помощь будет оценена.