2010-11-04 5 views
5

मेरे पास जो समस्या है, वह है जब मैं नीचे दिए गए कोड की तरह कुछ करने का प्रयास करता हूं, तो विंडो पॉप-अप अवरोधकों द्वारा अवरुद्ध की जाएगी। मैं getScript का उपयोग कर रहा हूं ताकि मैं क्रॉस डोमेन अनुरोध कर सकूं। मैं नीचे करने के लिए jQuery 1.4.2 का उपयोग कर रहा हूँ। कोड कीगेटस्क्रिप्ट कॉलबैक फ़ंक्शन के अंदर जेनरेट किए गए यूआरएल का उपयोग करके मैं एक नई विंडो कैसे खोल सकता हूं, और पॉप-अप ब्लॉकर्स से बच सकता हूं?

उदाहरण है कि अवरुद्ध हो जाएगा:

//Code that gets blocked by pop-up blockers 
$(document).ready(function(){ 
    $(".popup").click(function(){ 
     $.getScript("URL_To_A_Javascript_File", function(){ 
      window.open("dynamicURL", "_blank"); 
     }); 
    }); 
}); 

कोड है कि पिछले ब्लॉकर्स हो जाता है का उदाहरण, लेकिन does not समय में URL प्राप्त:

//This code will get past the pop-up blocker, but the var url won't be updated 
//with the dynamicURL before the window.open() fires in browsers 
//like safari or chrome. 
$(document).ready(function(){ 
    var url; 
    $(".popup").click(function(){ 
     $.getScript("URL_To_A_Javascript_File", function(){ 
      url = "dynamicURL"; 
     }); 
     window.open(url, "_blank"); 
    }); 
}); 

मैं एक खोल सकते हैं कैसे गेटस्क्रिप्ट कॉलबैक फ़ंक्शन के अंदर जेनरेट की गई एक यूआरएल का उपयोग करके नई विंडो, और पॉप-अप ब्लॉकर्स से बचें?

+0

फाई आप एक्सडी के लिए इसका उपयोग कर रहे हैं, तो आपको 'window.open' का उपयोग करने की आवश्यकता क्यों है? – prodigitalson

+0

एक्सडी AJAX का उपयोग करने की आवश्यकता है क्योंकि जावास्क्रिप्ट फ़ाइल जिसे मैं कॉल कर रहा हूं उसे मार्केटिंग सीआरएम में होस्ट किया गया है, और एक ऐसी स्क्रिप्ट लौटा रही है जिसमें उपयोगकर्ता के बारे में जानकारी शामिल है जिसे मुझे यह निर्धारित करने की आवश्यकता है कि कौन सा पृष्ठ पॉप-अप करना है। –

उत्तर

6

ठीक है, ऐसा लगता है कि आखिरकार मुझे पता चला कि मैं क्या करने की कोशिश कर रहा था।

इस तरह से मुझे जावास्क्रिप्ट को संभालने वाले मध्यवर्ती पृष्ठ की आवश्यकता के साथ पॉप-अप करने की अनुमति मिलती है।

var newWin; 
$(document).ready(function(){ 
    $(".popup").click(function(){ 
     newWin = window.open(); 

     $.getScript("URL_To_A_Javascript_File", function() { 
      newWin.location = "DynamicURL"; 
     }); 
     return false; 
    }); 
}); 
+1

बहुत बढ़िया धन्यवाद आपने मुझे निराशा x 1000 से बचाया! –

1

आप पॉपअप अवरोधकों से बच नहीं सकते हैं, और हम सभी इसके लिए धन्यवाद दें।

जब आपका कोड कुछ ईवेंट लूप से एक विंडो खोलता है जो उपयोगकर्ता क्रिया का प्रत्यक्ष परिणाम नहीं है (अधिकतर इसका मतलब है "क्लिक" ईवेंट), ब्राउज़र मानता है कि उपयोगकर्ता को नई विंडो देखने का विकल्प होना चाहिए ।

आपके "गेटस्क्रिप्ट" जैसी किसी चीज़ के मामले में, स्क्रिप्ट को प्राप्त करने वाले हैंडलर को गैर-उपयोगकर्ता ईवेंट लूपों में से एक में से एक में है, इसलिए अवरोधक नियम लागू होते हैं।

आप शायद अपनी नई विंडो से "getScript" कोड चला सकते हैं। ब्राउज़र उस "क्लिक" हैंडलर से विंडो को खोलने की अनुमति देगा।

+0

एटीएम मैं एक नई विंडो खोल रहा हूं जो तब दस्तावेज़ पर रीडायरेक्ट कोड करने के बाद आवश्यक पृष्ठ पर रीडायरेक्ट करता है।), लेकिन मैं इसे इस तरह से करने से बचना चाहता हूं। उपयोगकर्ता को लिंक पर क्लिक करने के बाद मूल रूप से गेटस्क्रिप्ट चलाने का एक तरीका चाहिए, और फिर जब getScript समाप्त हो जाए और var URL को अपडेट किया गया हो, तो विंडो खोलें। –

+0

मैं निराशा को समझता हूं, लेकिन केवल कोई तंत्र नहीं है जो आपको ब्राउज़र को कुछ आश्वासन देता है कि आप बुरा नहीं हैं। – Pointy

0

बस पॉपअप के साथ काम न करें, इसके बजाय लाइटबॉक्स जैसे कुछ का उपयोग करें।

संबंधित मुद्दे

 संबंधित मुद्दे