Saltar al contenido

¿Cómo incluir el archivo js en otro archivo js?

Después de investigar con especialistas en la materia, programadores de varias ramas y profesores dimos con la solución a la pregunta y la compartimos en este post.

Solución:

Solo puede incluir un archivo de script en una página HTML, no en otro archivo de script. Dicho esto, tu lata escriba JavaScript que cargue su script “incluido” en la misma página:

var imported = document.createElement('script');
imported.src = '/path/to/imported/script';
document.head.appendChild(imported);

Sin embargo, es muy probable que su código dependa de su secuencia de comandos “incluida”, en cuyo caso puede fallar porque el navegador cargará la secuencia de comandos “importada” de forma asíncrona. Su mejor apuesta será simplemente usar una biblioteca de terceros como jQuery o YUI, que resuelve este problema por usted.

// jQuery
$.getScript('/path/to/imported/script.js', function()

    // script is now loaded and executed.
    // put your dependent JS here.
);

no estoy de acuerdo con el document.write técnica (ver sugerencia de Vahan Margaryan). me gusta document.getElementsByTagName('head')[0].appendChild(...) (ver sugerencia de Matt Ball), pero hay un tema importante: el orden de ejecución del script.

Recientemente, pasé mucho tiempo reproduciendo un problema similar, e incluso el conocido complemento jQuery usa la misma técnica (ver src aquí) para cargar los archivos, pero otros también informaron el problema. Imagine que tiene una biblioteca de JavaScript que consta de muchos scripts y uno loader.js carga todas las piezas. Algunas partes dependen unas de otras. Imagina que incluyes otro main.js guión por

By reproducing the issue in my environment, I can see that **the order of execution of the scripts in Internet Explorer 8 can differ in the inclusion of the JavaScript*. It is a very difficult issue if you need include scripts that are dependent on one another. The issue is described in Loading Javascript files in parallel, and the suggested workaround is to use document.writeln:

document.writeln(""); documento.writeln("");

Entonces, en el caso de "los scripts se descargan en paralelo pero se ejecutan en el orden en que se escriben en la página", después de cambiar de document.getElementsByTagName('head')[0].appendChild(...) técnica para document.writelnya no había visto el problema.

Así que te recomiendo que uses document.writeln.

ACTUALIZADO: Si alguien está interesado, puede intentar cargar (y recargar) la página en Internet Explorer (la página usa el document.getElementsByTagName('head')[0].appendChild(...) técnica), y luego comparar con la versión fija utilizada document.writeln. (El código de la página está relativamente sucio y no es mío, pero puede usarse para reproducir el problema).

Necesitas escribir un objeto document.write:

document.write('');

y colóquelo en su archivo javascript principal

Tienes la posibilidad dar recomendación a este artículo si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *