Quiero incluir dinámicamente una etiqueta de script en una página web, sin embargo, no tengo control de su src, por lo que src = "source.js" puede verse así.
document.write('<script type="text/javascript">')
document.write('alert("hello world")')
document.write('</script>')
document.write('<p>goodbye world</p>')
Ahora poniendo ordinariamente
<script type="text/javascript" src="source.js"></script>
en la cabeza funciona bien, pero ¿hay alguna otra manera de agregar source.js dinámicamente usando algo como innerHTML?
javascript
src
document.write
Cadell Christo
fuente
fuente
Respuestas:
fuente
Puede usar la
document.createElement()
función de esta manera:fuente
Existe la
onload
función, que podría llamarse cuando el script se ha cargado correctamente:fuente
escribí un pequeño guión para cargar varios guiones:
uso:
fuente
Puede intentar seguir el fragmento de código.
fuente
Esto es trabajo para mí.
Usted puede comprobarlo.
fuente
Cuando los scripts se cargan de forma asíncrona, no pueden llamar a document.write. Las llamadas simplemente serán ignoradas y se escribirá una advertencia en la consola.
Puede usar el siguiente código para cargar el script dinámicamente:
Este enfoque funciona bien solo cuando su fuente pertenece a un archivo separado.
Pero si tiene el código fuente como funciones en línea que desea cargar dinámicamente y desea agregar otros atributos a la etiqueta del script, por ejemplo, clase, tipo, etc., el siguiente fragmento lo ayudaría:
fuente
Bueno, hay varias formas de incluir JavaScript dinámico. Utilizo este para muchos de los proyectos.
Puede llamar a crear una función universal que puede ayudarlo a cargar tantos archivos javascript como sea necesario. Hay un tutorial completo sobre esto aquí.
Insertar Javascript dinámico de la manera correcta
fuente
la única forma de hacerlo es reemplazarlo
document.write
con su propia función que agregará elementos al final de su página. Es bastante sencillo con jQuery:Si tiene html llegando a document.write en fragmentos como el ejemplo de la pregunta, necesitará almacenar en búfer los
htmlToWrite
segmentos. Tal vez algo como esto:fuente
Lo intenté agregando recursivamente cada secuencia de comandos
Nota Si sus scripts dependen uno tras otro, entonces la posición deberá estar sincronizada.
La dependencia mayor debe estar en el último lugar de la matriz para que los scripts iniciales puedan usarla
fuente
Carga scripts que dependen unos de otros en el orden correcto.
Basado en la respuesta de Satyam Pathak , pero reparó la carga. Se activó antes de que el script se cargara realmente.
fuente
Aquí hay un fragmento reducido, el mismo código que utiliza Google Analytics y Facebook Pixel:
Reemplace
https://example.com/foo.js
con su ruta de script.fuente
Una frase (sin embargo, no hay una diferencia esencial con las respuestas anteriores):
fuente