Cuáles son las formas de cargar JavaScript o CSS sin ejecutarlas?
Soy consciente de la carga dinámica de scripts / css agregando<style>
o<link>
tags al encabezado o cuerpo de la página, pero luego será ejecutado por el navegador una vez descargado. Estaba pensando en otras formas de descargar pero no ejecutar código javascript / css. Lo primero que se me ocurrió fue XMLHttpRequest:
//simple execution received script
var executeScript = function(code){
eval(code);
};
//create XMLHttpRequest in cross-browser manner
var xhr = createXMLHTTPObject();
//check whether file is loaded
var checkStatus = function(){
if(xhr.readyState == 4){
if(xhr.status >= 200 && xhr.status < 300 || xhr == 304){
executeScript(xhr.responseText);
}
else {//error
}
}
};
//do request
xhr.open('get','http://podlipensky.com/examples/dynamicscript/hey.js', true);
xhr.onreadystatechange = checkStatus;
xhr.send(null);
Pero en este caso estamos limitados con scripts del mismo dominio debido a la Política del mismo origen (aunque podemos intentar solucionarlo con CORS)
Otro enfoque, en el que estaba pensando es agregar dinámicamenteiframe
a la página y luego agreguescript
etiqueta a laiframe
, por lo que el script se ejecutará una vez que se descargue, pero sucede en el contexto de otra página:iframe
.
¿Hay alguna otra forma de descargar y no ejecutar el script?
ACTUALIZAR
Una de las razones por las que sería útil descargar, pero no ejecutar javascript / css es precargar las bibliotecas de terceros, pero usarlas solo a pedido.