2008-12-23 22 views

Respuesta

0

¿Qué tal esto:

(original link)

<script type="text/javascript"> 
// Function to allow one JavaScript file to be included by another. 
// Copyright (C) 2006-08 www.cryer.co.uk 
function IncludeJavaScript(jsFile) 
{ 
    document.write('<script type="text/javascript" src="' 
    + jsFile + '"></scr' + 'ipt>'); 
} 
</script> 

y luego para incluir un segundo archivo JavaScript sólo tiene que añadir la línea:

IncludeJavaScript('secondJS.js'); 

La página que vino de incluye también algunas precauciones que surgen de este enfoque, por lo que vale la pena mirar antes de usar el método.

+0

Si usa eso después de que el documento se haya cargado, se sorprenderá ya que document.write reemplazará su documento activo. – some

+0

Además, no es necesario dividir la etiqueta de cierre en dos partes. Dado que todo en la etiqueta de script según (x) HTML DTD es PCDATA (datos de caracteres analizados), debe escapar de la etiqueta final" – some

+0

debe estar DOM ensamblado, lo que hace que el segundo punto sea irrelevante – annakata

3

Hay bibliotecas que lo harán por usted. También puede agregar una etiqueta de script a su documento que apunte al archivo que desea cargar (desde js), que es el más simple, pero tiene problemas.

http://developer.yahoo.com/yui/yuiloader/

http://www.appelsiini.net/projects/lazyload

Editar: Veo una gran cantidad de respuestas que añadir una etiqueta de script a la cabecera de su documento. Como dije, esta simple solución tiene un problema, es decir, no sabrá cuándo el navegador ha terminado de cargar el script que solicitó, por lo que no sabrá cuándo puede llamar a este código. Si desea utilizar una solución como esta, también debería agregar una devolución de llamada de alguna manera para informarle cuándo se cargó el código requerido.

+0

una devolución de llamada es algo perfectamente razonable de hacer: al final del día, cada arranque de la biblioteca es solo una implementación de esta técnica, Ryan Doherty acaba de publicar un ejemplo simple. – annakata

+0

El complemento Lazy Load se trata de imágenes de carga diferida. No carga archivos JavaScript. –

5

La mayoría de la gente agrega el archivo JavaScript a la cabeza del documento:

<script type="text/javascript"> 
    var newfile=document.createElement('script'); 
    newfile.setAttribute("type","text/javascript"); 
    newfile.setAttribute("src", '/myscript.js'); 
    document.getElementsByTagName("head")[0].appendChild(newfile); 
</script> 
+0

@Ryan: Argh! ¡Solo estaba publicando eso! ;) – some

+0

sugerir editar para volver a escribir como función de utilidad – annakata

0

Theres también una función integrada en Scriptaculous que es muy fácil de usar.

Scriptaculous.require("path/to/script.js"); 

Merece la pena saberlo, ya que Scriptaculous es una librería de JavaScript muy común en estos días.

2

jQuery tiene getScript() función. También tenga en cuenta que la carga diferida mencionada anteriormente es solo para imágenes. No para archivos de JavaScript.

$.getScript(url, [callback]); 
0

Dojo lo hace utilizando dojo.require():

dojo.require("your.module.name"); 

Normalmente esto es una operación sincrónica hecho con XHR. Pero si usa la compilación de xDomain, será asíncrona y se generará dojo.addOnLoad() cuando se cargue la secuencia de comandos.

Leer más sobre él:

Cuestiones relacionadas