llamar - script type= text/javascript para que sirve
La carga dinámica de etiquetas de script no funciona como se esperaba (3)
Para este tipo de mecanismo, sería mejor utilizar document.write () para incluir sus scripts. La técnica que está utilizando actualmente es adecuada para los scripts de carga diferida, y descarga y ejecuta los scripts de forma asíncrona: http://www.nczonline.net/blog/2009/06/23/loading-javascript-without-blocking/
... o podría tener un proceso de compilación que realmente concatena estos archivos, y solo solicite un guión, que también ahorrará en el número de solicitudes, ya que lo que realmente ha hecho es aumentar el número de solicitudes.
Tenemos una aplicación que usa las bibliotecas google closing y dojo. Tenemos lo siguiente en nuestra página de índice que funciona como se espera:
<script type="text/javascript" src="runtime/src/lib/google-closure-rev26/closure/goog/base.js"></script>
<script type="text/javascript" src="runtime/src/lib/dojo_release_132_src/dojo/dojo.js"></script>
<script type="text/javascript" src="runtime/src/core/loader.js"></script>
Nos gustaría utilizar solo una etiqueta de script en la fuente html real. Así que tratamos de hacer lo siguiente:
<head>
<script type="text/javascript" src="runtime/src-bootstrap.js"></script>
</head>
y luego en src-bootstrap.js:
var head = document.getElementsByTagName("head")[0];
var s1 = document.createElement("script");
s1.type = "text/javascript";
s1.src = "runtime/src/lib/google-closure-rev26/closure/goog/base.js";
var s2 = document.createElement("script");
s2.type = "text/javascript";
s2.src = "runtime/src/lib/dojo_release_132_src/dojo/dojo.js";
var s3 = document.createElement("script");
s3.type = "text/javascript";
s3.src = "runtime/src/core/loader.js";
head.appendChild(s1);
head.appendChild(s2);
head.appendChild(s3);
Sin embargo, esto no funciona en FF. core / loader.js se ejecuta antes de que dojo se cargue por completo. ¿Alguna idea de por qué esto no funciona?
Supongo que porque estás creando los elementos a través del DOM, en lugar de tenerlos como marcado, el navegador no espera que se finalice un script antes de ejecutar el siguiente (como sería el caso en un <script></script><script></script>
configuración).
¿Qué hay de anexar los scripts en forma de cascada (el cierre de Google agrega s2 en su extremo, Dojo s3) o, como sugiere Lee Kowalkowski, escribir <script>
usando document.write()
?
Hablando en general: agrega un espacio de nombre debajo de la ventana y edita tus recursos externos,
deje un archivo
action.js
omain.js
localmente, que se agregará un método, preferiblemente en el ámbito global (es decir, bajo la ventana ..).edite su recurso externo, agregue 1 línea adicional al final,
action.js
un método enaction.js
omain.js
, cuando semain.js
la carga, la "devolución de llamada como" ejecutará ese método que ha estado agregando al DOM previamente. funciona muy parecido a JSONProtocol.funciona de maravilla incluso con la combinación más compleja de recursos cargados dinámicamente.
vea el ejemplo de esta solución muy similar para la carga dinámica de Google-Closure-Library en otro hilo ( https://.com/a/17226714/257319 )