Как хорошая практика, я считаю хорошей идеей проверить , если всплывающее окно было заблокировано, и принять меры в случае.Вы должны знать, что window.open имеет возвращаемое значение, и это значение может быть нулевым, если действие не выполнено.Например, в следующем коде:
function pop(url,w,h) {
n=window.open(url,'_blank','toolbar=0,location=0,directories=0,status=1,menubar=0,titlebar=0,scrollbars=1,resizable=1,width='+w+',height='+h);
if(n==null) {
return true;
}
return false;
}
, если всплывающее окно заблокировано, window.open вернет значение null.Таким образом, функция вернет false.
Например, представьте, что вызываете эту функцию напрямую из любой ссылки с target="_blank"
: если всплывающее окно успешно открыто, возвращение false
заблокирует действие ссылки,иначе, если всплывающее окно заблокировано, возвращение true
разрешит поведение по умолчанию (откройте новое окно _blank) и продолжится.
<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
Таким образом, у вас будет всплывающее окно, если оноработает, и окно _blank, если нет.
Если всплывающее окно не открывается, вы можете:
- открыть пустое окно, как в примере, и перейти на
- открыть поддельное всплывающее окно (iframe внутри страницы)
- сообщить пользователю («пожалуйста, разрешите всплывающие окна для этого сайта»)
- откройте пустое окно, а затем сообщите пользователю и т. Д...