2012-02-24 12 views
6

क्या जावास्क्रिप्ट द्वारा जावास्क्रिप्ट द्वारा जावास्क्रिप्ट फ़ाइलों और सीएसएस फ़ाइलों को चलाने या निकालना संभव है? यदि जावास्क्रिप्ट द्वारा यह संभव नहीं है, तो क्या हम इसे PHP या किसी अन्य सर्वर साइट भाषा द्वारा कर सकते हैं?रनटाइम पर जावास्क्रिप्ट लोड और अनलोड करें

असल में मैंने yep-nope js द्वारा कोशिश की लेकिन मैं इसके द्वारा किसी भी जावास्क्रिप्ट को उतारने में सक्षम नहीं हूं।

उत्तर

10

चेक this, this और this

शीर्ष लिंक से, गतिशील रूप से जोड़ने के लिए जे एस या सीएसएस:

function loadjscssfile(filename, filetype){ 
if (filetype=="js"){ //if filename is a external JavaScript file 
    var fileref=document.createElement('script') 
    fileref.setAttribute("type","text/javascript") 
    fileref.setAttribute("src", filename) 
} 
else if (filetype=="css"){ //if filename is an external CSS file 
    var fileref=document.createElement("link") 
    fileref.setAttribute("rel", "stylesheet") 
    fileref.setAttribute("type", "text/css") 
    fileref.setAttribute("href", filename) 
} 
if (typeof fileref!="undefined") 
    document.getElementsByTagName("head")[0].appendChild(fileref) 
} 

loadjscssfile("myscript.js", "js") //dynamically load and add this .js file 
loadjscssfile("javascript.php", "js") //dynamically load "javascript.php" as a JavaScript file 
loadjscssfile("mystyle.css", "css") ////dynamically load and add this .css file 

इसके अलावा, गतिशील रूप से दूर करने के लिए जे एस या सीएसएस:

function removejscssfile(filename, filetype){ 
var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist from 
var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for 
var allsuspects=document.getElementsByTagName(targetelement) 
for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove 
    if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1) 
    allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by calling parentNode.removeChild() 
} 
}  
removejscssfile("somescript.js", "js") //remove all occurences of "somescript.js" on page 
removejscssfile("somestyle.css", "css") //remove all occurences "somestyle.css" on page 

लेकिन हटाने के बारे में ध्यान दें:

तो जब आप बाहरी जावास्क्रिप्ट या सीएसएस फ़ाइल को हटाते हैं तो वास्तव में क्या होता है? शायद पूरी तरह से आप वास्तव में क्या उम्मीद करेंगे। जावास्क्रिप्ट के मामले में, जबकि तत्व पेड़ से हटा दिया गया है, बाहरी जावास्क्रिप्ट फ़ाइल के हिस्से के रूप में लोड किया गया कोई भी कोड ब्राउज़र की स्मृति में रहता है। यही कारण है कि यह है कि जब बाहरी फ़ाइल पहले लोड

+0

धन्यवाद माइकी असल में मैंने jQuery द्वारा ऐसा किया और यह ठीक काम कर रहा है, लेकिन मैंने इसे फायरबग में चेक किया है, यह स्क्रिप्ट टैग प्रदर्शित नहीं कर रहा है इसलिए मुझे भ्रमित हो गया। लेकिन यह कार्यक्षमता के रूप में काम कर रहा कार्यक्षमता :) एक बार फिर धन्यवाद – Tarun

1

क्या जावास्क्रिप्ट द्वारा जावास्क्रिप्ट द्वारा जावास्क्रिप्ट फ़ाइलों और सीएसएस फ़ाइलों को चलाने या निकालना संभव है?

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

जहां तक ​​सीएसएस का संबंध है, आप स्टाइलशीट जोड़ने/निकालने के लिए <link.../> तत्व जोड़/निकाल सकते हैं। इसके अतिरिक्त आप <style> तत्वों को जोड़/निकाल सकते हैं जिनमें नियम हो सकते हैं।

आप पृष्ठ के भीतर तत्वों पर किसी भी इनलाइन शैलियों को संशोधित करने के लिए डीएचटीएम का भी उपयोग कर सकते हैं।

5

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

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

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