ตามแนวทางปฏิบัติที่ดีฉันคิดว่าควรทดสอบว่าป๊อปอัปถูกบล็อกและดำเนินการในกรณีหรือไม่ คุณต้องรู้ว่า 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 จะคืนค่าว่าง ดังนั้นฟังก์ชันจะคืนค่าเท็จ
ลองจินตนาการถึงการเรียกฟังก์ชั่นนี้โดยตรงจากลิงก์ใด ๆ ที่มีtarget="_blank"
: หากป๊อปอัพเปิดสำเร็จการกลับมา
false
จะบล็อกการทำงานของลิงก์มิฉะนั้นถ้าป๊อปอัปถูกบล็อกการกลับมาtrue
จะทำให้พฤติกรรมเริ่มต้น (เปิดหน้าต่าง _blank ใหม่) .
<a href="http://whatever.com" target="_blank" onclick='return pop("http://whatever.com",300,200);' >
วิธีนี้คุณจะมีป๊อปอัปหากใช้งานได้และมีหน้าต่าง _blank หากไม่มี
หากป๊อปอัปไม่เปิดขึ้นคุณสามารถ:
- เปิดหน้าต่างว่างเหมือนในตัวอย่างและดำเนินการต่อ
- เปิดป๊อปอัปปลอม (iframe ภายในหน้า)
- แจ้งผู้ใช้ ("โปรดอนุญาตป๊อปอัปสำหรับไซต์นี้")
- เปิดหน้าต่างว่างแล้วแจ้งผู้ใช้ ฯลฯ