Как хорошая практика, я думаю, что это хорошая идея, чтобы проверить, было ли заблокировано всплывающее окно и принять меры в случае. Вы должны знать, что 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 вернет ноль. Так что функция вернет false.
В качестве примера представьте, что вы вызываете эту функцию напрямую из любой ссылки с помощью target="_blank"
: если всплывающее окно успешно открыто, возвращение
false
заблокирует действие ссылки, в противном случае всплывающее окно заблокирует true
поведение по умолчанию (откройте новое окно _blank) и продолжит работу. ,
<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
Таким образом, у вас будет всплывающее окно, если оно работает, и окно _blank, если нет.
Если всплывающее окно не открывается, вы можете:
- откройте пустое окно, как в примере, и продолжайте
- открыть поддельное всплывающее окно (iframe внутри страницы)
- сообщить пользователю («пожалуйста, разрешите всплывающие окна для этого сайта»)
- откройте пустое окно, а затем сообщите пользователю и т. д.