javascript - उपयोगकर्ता लॉग इन करने से पहले पॉपअप पता लगाना




browser popup (4)

क्या यह निर्धारित करने का एक अच्छा तरीका है कि किसी व्यक्ति के पास पॉपअप ब्लॉकर सक्षम है या नहीं? मुझे एक वेब अनुप्रयोग बनाए रखने की ज़रूरत है जो कि दुर्भाग्य से उसमें बहुत सारे पॉपअप हैं और मुझे यह जांचना है कि उपयोगकर्ता के पास पॉपअप ब्लॉकर्स सक्षम हैं या नहीं।

मुझे ऐसा करने का एकमात्र तरीका जावास्क्रिप्ट से एक विंडो खोलना है, यह देखने के लिए कि क्या यह निर्धारित है कि कोई ब्लॉकर सक्षम है या नहीं, उसके बाद इसे तुरंत बंद कर दें।

यह थोड़ा परेशान है क्योंकि उपयोगकर्ताओं को यह सक्षम नहीं है क्योंकि स्क्रीन पर एक छोटी सी फ्लैश दिखाई देता है क्योंकि खिड़की खोलता है और तुरंत बंद हो जाती है।

क्या यह पूरा करने के लिए कोई अन्य गैर-कूड़ेदार तरीके हैं?


जैसा कि अन्य लोगों ने टिप्पणी की है, यह सुनिश्चित करने का एकमात्र तरीका है कि यह कोशिश करना है

हालांकि, सवाल का एक अच्छा अनुमानित जवाब "एक पॉपअप अवरोधक स्थापित है", ये दिन, "हाँ" है। सभी हाल ही के ब्राउज़र डिफ़ॉल्ट रूप से आपके पॉप-अप को अवरुद्ध करेंगे, इसलिए आप इस के साथ सुन्दरता से निपटने के लिए अपने ऐप को बेहतर ढंग से डिज़ाइन करेंगे। अर्थात्, खिड़की की कोशिश मत करो। एक उपयोगकर्ता इंटरैक्शन (आम तौर पर ऑनक्लिक) की प्रतिक्रिया के अलावा, और आप ठीक हो जाएंगे।


पॉपअप जो किसी उपयोगकर्ता द्वारा किसी एक्शन के जवाब में खोले जाते हैं - जैसे कि एक लिंक पर क्लिक करने से पॉपअप ब्लॉकर द्वारा अवरुद्ध नहीं किया जाना चाहिए।


जैसा कि अन्य लोगों ने कहा है, आपको इसे आज़माकर देखेंगे, लेकिन परिणामस्वरूप विंडो ऑब्जेक्ट की जांच करना, "फ़र्सी" सभी ब्राउज़रों के लिए पर्याप्त नहीं है।

पॉपअप अवरुद्ध होने पर ओपेरा अभी भी एक Window ऑब्जेक्ट देता है, इसलिए ऑब्जेक्ट को यह निर्धारित करने के लिए पर्याप्त रूप से जांचना होगा कि क्या यह एक वास्तविक विंडो है:

var popup = window.open(/* ... */);
var popupBlocked = (!popup || typeof popup.document.getElementById == "undefined");

जावास्क्रिप्ट का उपयोग करके एक पॉपअप ब्लॉकर को पढ़ें:

असल में आप जांचते हैं कि 'window.open' पद्धति एक नव-खोले विंडो में एक हैंडल देता है।

इस तरह दिखता है:

var mine = window.open('','','width=1,height=1,left=0,top=0,scrollbars=no');
if(mine)
    var popUpsBlocked = false
else
    var popUpsBlocked = true
mine.close()




popup