अद्यतन: पॉपअप वास्तव में प्राचीन काल से मौजूद हैं। प्रारंभिक विचार मुख्य विंडो को बंद किए बिना एक और सामग्री दिखाने के लिए था। अब तक, ऐसा करने के अन्य तरीके हैं: जावास्क्रिप्ट सर्वर के लिए अनुरोध भेजने में सक्षम है, इसलिए पॉपअप का उपयोग शायद ही कभी किया जाता है। लेकिन कभी-कभी वे अभी भी काम कर रहे हैं।
पिछले दुष्ट स्थलों में पॉपअप का बहुत दुरुपयोग हुआ। एक बुरा पृष्ठ विज्ञापनों के साथ पॉपअप विंडो के टन खोल सकता है। इसलिए अब अधिकांश ब्राउज़र पॉपअप को ब्लॉक करने और उपयोगकर्ता की सुरक्षा करने का प्रयास करते हैं।
अधिकांश ब्राउज़र पॉपअप को ब्लॉक करते हैं यदि उन्हें उपयोगकर्ता-ट्रिगर इवेंट हैंडलर के बाहर बुलाया जाता है।
यदि आप इसके बारे में सोचते हैं, तो यह थोड़ा मुश्किल है। यदि कोड सीधे ऑनक्लियर हैंडलर में है, तो यह आसान है। लेकिन क्या सेटअप में पॉपअप खुलता है?
इस कोड को आज़माएं:
// open after 3 seconds
setTimeout(() => window.open('http://google.com'), 3000);
पॉपअप क्रोम में खुलता है, लेकिन फ़ायरफ़ॉक्स में अवरुद्ध हो जाता है।
... और यह फ़ायरफ़ॉक्स में भी काम करता है:
// open after 1 seconds
setTimeout(() => window.open('http://google.com'), 1000);
अंतर यह है कि फ़ायरफ़ॉक्स 2000ms या उससे कम समय के लिए स्वीकार्य है, लेकिन इसके बाद - "विश्वास" को हटा देता है, यह मानते हुए कि अब यह "उपयोगकर्ता कार्रवाई के बाहर" है। तो पहला एक अवरुद्ध है, और दूसरा एक नहीं है।
मूल उत्तर जो वर्तमान 2012 था:
पॉपअप ब्लॉकर चेकिंग के इस समाधान का परीक्षण FF (v11), सफारी (v6), क्रोम (v23.0.127.95) और IE (v7 & v9) में किया गया है। जैसा कि आप फिट देखते हैं, त्रुटि संदेश को संभालने के लिए डिस्प्लेएयर फ़ंक्शन को अपडेट करें।
var popupBlockerChecker = {
check: function(popup_window){
var scope = this;
if (popup_window) {
if(/chrome/.test(navigator.userAgent.toLowerCase())){
setTimeout(function () {
scope.is_popup_blocked(scope, popup_window);
},200);
}else{
popup_window.onload = function () {
scope.is_popup_blocked(scope, popup_window);
};
}
} else {
scope.displayError();
}
},
is_popup_blocked: function(scope, popup_window){
if ((popup_window.innerHeight > 0)==false){
scope.displayError();
}
},
displayError: function(){
alert("Popup Blocker is enabled! Please add this site to your exception list.");
}
};
उपयोग:
var popup = window.open("http://www.google.ca", '_blank');
popupBlockerChecker.check(popup);
उम्मीद है की यह मदद करेगा! :)