2012-02-24 16 views
6

¿Es posible agregar o eliminar archivos JavaScript y archivos CSS mediante JavaScript en tiempo de ejecución? Si JavaScript no lo puede hacer, ¿podemos hacerlo por PHP o por otro idioma de servidor?Cargar y descargar javascript en tiempo de ejecución

En realidad probé por yep-nope js pero no consigo descargar ningún javascript.

Respuesta

10

Comprobar this, this y this

Desde el enlace de la parte superior, para añadir dinámicamente js o css:

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 

Además, para eliminar de forma dinámica JS o CSS:

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 

Pero tome nota de la eliminación:

Entonces, ¿qué sucede realmente cuando elimina un archivo JavaScript o CSS externo? Tal vez no del todo lo que esperarías en realidad. En el caso de JavaScript , mientras que el elemento se elimina del árbol de documento , cualquier código cargado como parte del archivo JavaScript externo permanece en la memoria del navegador. Es decir, todavía se puede acceder variables, funciones, etc., que se añadieron cuando el archivo externo primera cargado

+0

Gracias Mikey En realidad hice lo mismo con jQuery y está funcionando bien, pero lo revisé en firebug, no muestra la etiqueta del script, es por eso que me confundí. Pero funciona funcionando como se esperaba :) Gracias una vez más – Tarun

1

¿Es posible agregar o eliminar archivos JavaScript y archivos CSS por JavaScript en tiempo de ejecución?

Puede cargar JavaScript dinámicamente, sin embargo, una vez que lo haya cargado, no podrá descargar JavaScript en una página activa. Puede volver a cargar una página, lo que borrará las secuencias de comandos activas y comenzará de nuevo. Alternativamente, puede anular las funciones que tiene configuradas.

En lo que respecta a CSS, puede agregar/eliminar <link.../> elementos para agregar/eliminar hojas de estilo. Además, puede agregar/eliminar <style> elementos que puedan contener reglas.

También podría usar DHTML para modificar cualquier estilo en línea en los elementos dentro de la página.

5

No, usted no puede hacer eso. Una vez que un bloque de JavaScript se carga en el navegador y se ejecuta, se almacena en la memoria del navegador bajo el alcance de la ventana respectiva. No hay forma de descargarlo (sin la actualización/ventana cerrada).

Como máximo, todo lo que puede hacer es establecer las variables incluidas en su archivo javascript en Nulo. Pero una vez más esto no eliminaría el problema por completo, pero sí, cualquier acceso adicional a esas variables no arrojará el resultado.

Cuestiones relacionadas