2012-05-07 8 views
5

मेरे पास एक वेब फॉर्म है जो रोबोट को फ़िल्टर करने के लिए reCAPTCHA का उपयोग करता है। फ़ॉर्म में <script> टैग है जो में कैप्चा चुनौती लोड करता है। यदि यह स्क्रिप्ट लोड करने में विफल रहता है, तो कैप्चा चुनौती दिखाई नहीं देगी और कोई भी पोस्ट भेजने में सक्षम नहीं होगा।क्या यह पता लगाने का कोई तरीका है कि बाहरी जावास्क्रिप्ट फ़ाइल पूरी तरह से लोड हो गई है या नहीं?

क्या कोई तरीका है कि मैं यह पता लगा सकता हूं कि स्क्रिप्ट लोड हो गई है ताकि मैं इस सुविधा को मेरी तरफ से बंद कर सकूं?

+0

करने की जरूरत है, लेकिन मुझे लगता है कि आप एक तेजी से समाधान – wizztjh

उत्तर

6

load ईवेंट को script तत्व से जोड़ें जो reCAPTCHA को इंगित करता है।

var script = document.createElement("script"); 

script.addEventListener("load", function() { 
    // Script has loaded. 
}); 

script.src = "/path/to/recaptcha.js"; 

document.body.appendChild(script); 
+0

क्या आप कृपया अपने उत्तर पर विस्तार कर सकते हैं। धन्यवाद। –

2

शायद आप उस पहचान को करने का कोई तरीका ढूंढ सकते हैं, लेकिन मैं इसे अनुशंसा नहीं करता क्योंकि यह कैप्चा के उद्देश्य को हरा देता है। एक कंप्यूटर/रोबोट आसानी से स्क्रिप्ट लोड नहीं कर सकता है। एक होस्ट फ़ाइल प्रविष्टि चाल करेगा।

एक स्क्रिप्ट भी बनाई जा सकती है जो आपके लोड को विफल करने के लिए केवल आपके हैंडलिंग को निष्पादित करती है, जिससे आपके कैप्चा को बाधित किया जा सकता है।

+0

आप विस्तार से बता सकते हैं कि कैसे तरक़ीब काम करेगा के लिए देख रहे हैं? धन्यवाद। –

+0

@BenHuh यदि आपके पास कोड है जो आपके सर्वर को बताता है कि कैप्चा की आवश्यकता नहीं है (क्योंकि यह लोड करने में विफल रहा है), तो कोई भी ऐसी स्क्रिप्ट लिख सकता है जो कैप्चा लोड हो या नहीं, उस कोड को निष्पादित करता है। तब कैप्चा की अब आवश्यकता नहीं होगी और यदि उपयोगकर्ता आपके फॉर्म का दुरुपयोग करना चाहता है तो वह उपयोगकर्ता किसी भी बॉट में उस संशोधन को जोड़ सकता है। – Paulpro

+0

ओह हाँ, क्योंकि जावास्क्रिप्ट क्लाइंट पक्ष निष्पादित किया गया है, सर्वर पक्ष नहीं। मैं आपसे सहमत हुँ। धन्यवाद :) –

1

script.addEventListener IE8 और IE7 पर काम नहीं करेगा। उसके लिए आपको मैं तुम्हें http://requirejs.org/ उपयोग करने के लिए सुझाव है कि

if (!script.addEventListener) { 
     script.attachEvent("onload", function(){ 
     // script has loaded in IE 7 and 8 as well. 
}); 
    } 
    else 
    { 
    script.addEventListener("load", function() { 
     // Script has loaded. 
    }); 
} 
संबंधित मुद्दे

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