2010-07-16 12 views
10

क्या कोई एक लाइनर है जिसे मैं किसी जावास्क्रिप्ट कंसोल में रिमोट स्रोत से जावास्क्रिप्ट स्क्रिप्ट डाउनलोड और निष्पादित करने के लिए निष्पादित कर सकता हूं?मैं जावास्क्रिप्ट कंसोल से जावास्क्रिप्ट स्क्रिप्ट को गतिशील रूप से डाउनलोड और चला सकता हूं?

मैं यह देखने के लिए देख रहा था कि this script डाउनलोड करने का कोई अच्छा तरीका है या यादृच्छिक पृष्ठों पर इंटरैक्टिव रूप से प्रयोग करने के लिए इसका उपयोग करें, जो कि नहीं हो सकता है, jQuery लोड हो गया है।

[संपादित करें: मैं मैं गतिशील रूप से एक स्क्रिप्ट तत्व बना सकते हैं लेकिन वहाँ यह करने के लिए एक अच्छा तरीका है के बारे में पता कर रहा हूँ?]

उत्तर

9

मुझे लगता है कि के लिए एक छोटे से स्क्रिप्ट में लिखा है।

var loadjQuery = function(cb){ 
    if(typeof(jQuery) == 'undefined'){ 
    var scr = document.createElement('script'); 
    scr.setAttribute('type', 'text/javascript'); 
    scr.setAttribute('src', 'http://code.jquery.com/jquery-latest.js'); 

    if(scr.readyState){ 
     scr.onreadystatechange = function(){ 
      if(scr.readyState === 'complete' || scr.readyState === 'loaded'){ 
       scr.onreadystatechange = null; 
       if(cb === 'function'){ 
        args = [].slice.call(arguments, 1); 
        cb.apply(this, args); 
       } 
      } 
     }; 
    } 
    else { 
     scr.onload = function(){ 
      if(cb === 'function'){ 
       args = [].slice.call(arguments, 1); 
       cb.apply(this, args); 
      } 
     }; 
    } 

    var head = document.getElementsByTagName('head')[0]; 
    head.insertBefore(scr, head.firstChild); 
    } 
} 

यह क्रॉस-ब्राउज़र काम करता है।

संपादित

मैं एक कॉलबैक के साथ एक समारोह के रूप में है कि स्क्रिप्ट नवीनीकृत किया है। सार होना चाहिए:

loadjQuery(function(something){ 
    // execute code after library was loaded & executed 
}); 
+0

अच्छा! बस अपने कोड की कोशिश की और यह अच्छी तरह से काम करता है। अगर यह क्रोम में लोड होने का कोई तरीका था और शॉर्टकट का उपयोग करने में कुछ आसान था, तो मुझे प्यारा लगेगा ... मैं अनुमान लगा रहा हूं कि मुझे किस प्रकार की क्रोम एक्सटेंशन लिखनी होगी। +1। – jkp

+0

'scr.setAttribute ('type', 'text/javascript'); 'अनावश्यक है। साथ ही, आप 'scr.src = ...' 'scr.setAttribute ('src', ...) के बजाय' scr.src = ... 'का उपयोग कर सकते हैं। – James

+0

परिवर्तनीय "सीबी" क्या है? – Zuks

1
+0

समस्या चिकन और अंडे है! मैं उन पृष्ठों में jQuery लोड करने में सक्षम होना चाहता हूं जो इसे लोड नहीं करते हैं। किसी भी दर पर, यदि वे इसे कर सकते हैं, तो यह स्पष्ट रूप से संभव है, मुझे लगता है कि वे गतिशील रूप से स्क्रिप्ट तत्व बना रहे हैं जब तक कोई बेहतर तरीका न हो। – jkp

1

खैर, यह एक लंबे जावास्क्रिप्ट टुकड़ा लेने के लिए और यह सब एक साथ रखा एक पंक्ति :)

यह दृष्टिकोण कुछ लाइनें लग जाते हैं यदि आप एक oneliner में togehter मिश्रण सकता है में करने के लिए काफी सरल है (लेकिन मुझे लगता है कि आप एक छोटे समाधान की तलाश में हैं)। आपको Google AJAX पुस्तकालयों को लोड करने के लिए दो स्क्रिप्ट टैग की सामग्री को बेचना होगा - यह सब कुछ है। हालांकि आपको पहले व्यक्ति को पाने के लिए कॉल करने की आवश्यकता हो सकती है।

+0

हाँ, मुझे लगता है कि आप सही हैं, मुझे लगता है कि बस एक बुकमार्कलेट क्या है :) [संपादित करें: किसी ने मुझे इसे हराया! http://www.learningjquery.com/2006/12/jquerify-bookmarklet - खुशी मैंने अभी पूछा ....] – jkp

+0

सही, यह बुकमार्कलेट कार्यक्षमता है - मैं अक्सर फ़ायरबग लाइट को शामिल करने के लिए इसका उपयोग करता हूं – Thariama

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