Jako dobrą praktykę uważam, że dobrym pomysłem jest sprawdzenie, czy wyskakujące okienko zostało zablokowane i podjęcie działań w przypadku. Musisz wiedzieć, że window.open ma wartość zwracaną i ta wartość może być pusta, jeśli akcja się nie powiedzie. Na przykład w poniższym kodzie:
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;
}
jeśli wyskakujące okienko jest zablokowane, window.open zwróci wartość null. Więc funkcja zwróci false.
Jako przykład, wyobraź sobie wywołanie tej funkcji bezpośrednio z dowolnego linku z target="_blank"
: jeśli wyskakujące okienko zostanie pomyślnie otwarte, powrót
false
zablokuje działanie linku, w przeciwnym razie, jeśli wyskakujące okienko zostanie zablokowane, powrót true
pozwoli na zachowanie domyślne (otwiera nowe _puste okno) i kontynuuje .
<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
W ten sposób będziesz mieć wyskakujące okienko, jeśli to działa, i _blank okno, jeśli nie.
Jeśli wyskakujące okienko się nie otworzy, możesz:
- otwórz puste okno, jak w przykładzie i kontynuuj
- otwórz fałszywe wyskakujące okienko (iframe wewnątrz strony)
- poinformuj użytkownika („proszę zezwolić na wyświetlanie wyskakujących okienek w tej witrynie”)
- otwórz puste okno, a następnie poinformuj użytkownika itp.