2010-02-08 13 views
5

का उपयोग कर बाहरी जावास्क्रिप्ट चलाने में असमर्थ जेएस के बारे में पूरी तरह से नौसिखिया।एक बुकमार्कलेट

मुझे एक बाहरी स्क्रिप्ट का उपयोग करने की आवश्यकता है जो वर्तमान पृष्ठ में कुछ तत्वों को बुकमार्कलेट के रूप में एक्सेस करने में संशोधित करता है।

मैं वेब पेज निम्नलिखित < script> लाइनों डालने के HTML स्रोत कोड को संशोधित करते हैं:

s=document.createElement('script'); 
s.type='text/javascript'; 
s.src='script.js'; 
document.getElementsByTagName('head')[0].appendChild(s); 

यह ठीक काम करता है। लेकिन अगर मैं एक जावास्क्रिप्ट बनाने के लिए: एक ही लाइनों के साथ बुकमार्कलेट, मैं निम्नलिखित तार के साथ एक रिक्त पृष्ठ प्राप्त:

[object HTMLScriptElement] 

जबकि, अगर मैं एक बुकमार्कलेट पिछले अभियानों के लिए लाइन

void(null); 

जोड़ने बनाने , वेब पेज डिस्पर नहीं करता है लेकिन स्क्रिप्ट निष्पादित नहीं होती है।

क्यों?

उत्तर

7

एक आम बात बस एक स्वयं को क्रियान्वित समारोह अभिव्यक्ति, कुछ इस तरह उपयोग करने के लिए है:

(function() { 
    var s=document.createElement('script'); 
    s.type='text/javascript'; 
    s.src='script.js'; 
    document.getElementsByTagName('head')[0].appendChild(s); 
}()); 

बुकमार्कलेट:

javascript:(function(){var s=document.createElement('script');s.type='text/javascript';s.src='script.js';document.getElementsByTagName('head')[0].appendChild(s);}()); 

समारोह वापस आ जाएगी undefined (कोई वापसी मान आपूर्ति) को रोकने के नेविगेशन

ध्यान दें कि यह वैश्विक चर (जैसे s) बनाने से बच जाएगा जो पृष्ठ पर उपयोग किए गए अन्य चर के साथ ओवरलैप कर सकते हैं, क्योंकि सभी चर अज्ञात फ़ंक्शन के दायरे में बनाए जाते हैं।

+0

अभी भी काम नहीं कर रहा है। – chanchal1987

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