Yipin Sky Web Development Code Station ASP y otros blogs de recopilación de códigos clásicos relacionados con el desarrollo web: comunicación ASP Grupo QQ 12814238 (completo) 14725152 (abierto) Página de inicio Reconstrucción y optimización de ASPJS/AJAX recopilación e intercambio de bases de datos de códigos integrales sistema operativo de entretenimiento audiovisual Artículo anterior | Siguiente Un artículo JS/AJAX
Cómo pasar parámetros a archivos JavaScript en JavaScript Autor: Yipin Fecha: 2009-03-23
Tamaño de fuente: pequeño, mediano,
grande
. Esta es la forma más sencilla de utilizar variables globales, como Google Adsense:
código de programa
<tipo de script="texto/javascript">
google_ad_client = 'pub-3741595817388494';
</script>
<script type="text/javascript" src=" http://pagead2 .
googlesyndication.com/pagead/show_ads.js"></script>
La desventaja es que se introducen variables globales. Hay dos variaciones sobre cómo introducir archivos:
código de programa
// Variante 1: usar document.write para generar
<tipo de script="texto/javascript">
google_ga_id = 'g6u7un8646xx';
document.write(unescape('%3Cscript type="text/javascript" src=
" http://www.google-analytics.com/ga.js"%3E%3C/script%3E' ));
</script>
código de programa
// Variación 2: usar la operación DOM para agregar al encabezado
<tipo de script="texto/javascript">
G_BEACON_ATP = 'categoría=&userid=&channel=112ad_id=';
document.getElementsByTagName('cabeza')[0].appendChild(document.
createElement('script')).src='http://taobao.com/atp.js';
</script>
Nota: El código anterior es un código de demostración virtual basado en una aplicación real
. Nota: La variante 1 se utiliza en muchas aplicaciones. Los métodos de escritura comunes son los siguientes:
código de programa
<tipo de script="texto/javascript">
// Simplemente escapa directamente:
document.write('<script type="text/javascript" src="test.js"></script>');
// O dale me gusta a la página de inicio de Yahoo!
document.write('<scr' + 'ipt type="text/javascript" src="test.js"></scr' + 'ipt>');
</script>
2.
En comparación con obtener y analizar el src del elemento del script y todas las variables, preferimos pasar los parámetros de la siguiente manera:
código de programa
<script type="text/javascript" src="test.js?a=b&c=d"></script>
El problema central es cómo obtener el atributo src.
El primer método es agregar el atributo id al script, obtener el script actual a través del id y luego usar expresiones regulares para extraer los parámetros de src. La desventaja es que en la especificación HTML 4.01, el elemento SCRIPT no tiene un atributo de identificación. Esta deficiencia no es una deficiencia. Después de todo, es mejor creer en los estándares que no tenerlos.
El segundo método es utilizar el nombre del archivo js como enlace. Después de pasar document.getElementsByTagName('script') en el código js, el archivo js actual coincide con las reglas regulares. Este método es muy ortodoxo, pero requiere un nombre de archivo único. La desventaja es que hay mucho código, no está refinado y tiene un ligero impacto en el rendimiento.
El método tres es simplemente agregar datos de atributos personalizados según el método uno:
código de programa
<script id="testScript" type="text/javascript" src="test.js" data="a=b&c=d"></script>
En el archivo test.js, los parámetros pasados se obtienen a través de la siguiente línea:
código de programa
var scriptArgs = document.getElementById('testScript').getAttribute('datos');
El cuarto método es utilizar el mecanismo de ejecución secuencial de js (el archivo js se puede cargar de forma sincrónica o asincrónica, pero cuando se ejecuta, debe ejecutarse en el orden en el flujo de documentos). Cuando se ejecuta un archivo js, debe ser el último entre los archivos js "cargados":
código de programa
var scripts = document.getElementsByTagName('script');
var currentScript = scripts[scripts.length - 1];
El método cuatro es más diestro y genial que el método dos.
En términos de simplificación y rendimiento del código, Método 3>Método 1>Método 4>Método 2
Resumen: Si le interesan los estándares, le recomiendo el método 4, si, como yo, cree que no es necesario cumplir completamente con los estándares, el método; Se recomienda 3.
3. Plan de inspiración Si eres un fiel seguidor de John Resig como yo, es posible que aún recuerdes las "Etiquetas de script degradantes" que fueron muy discutidas en agosto del año pasado. John Resig nos abrió una puerta a la imaginación. Para el problema de este artículo, también se pueden utilizar los siguientes "métodos malvados" para lograrlo:
código de programa
<script tipo="texto/javascript" src="test.js">
TB.SomeApp.scriptArgs = 'a=b&c=d';
</script>
En el archivo test.js:
código de programa
TB = {}; TB.AlgunaAplicación = {};
var scripts = document.getElementsByTagName("script");
eval(scripts[scripts.length - 1].innerHTML);
Esto almacena los parámetros en la variable TB.SomeApp.scriptArgs.
Cuando no hay muchos parámetros, incluso puedes hacer esto:
código de programa
<script type="text/javascript" src="test.js">a=b&c=d</script>
archivo js:
código de programa
var scripts = document.getElementsByTagName("script");
var scriptArgs = scripts[ scripts.length - 1 ].innerHTML.replace(/[s]/g, '');
La imaginación es infinita, también puedes usar onload:
código de programa
<script type="text/javascript" src="test.js" xxxxx="TB.SomeFun('a=b&c=d')"></script>
Simplemente defina la función en el archivo js:
código de programa
tuberculosis = {};
TB.SomeFun = función(arg) { //código };
El código anterior puede ejecutarse correctamente en navegadores que no sean IE. Por estúpido, es decir, debes agregar algunas líneas de código:
código de programa
si (ventana.ActiveXObject) {
var scripts = document.getElementsByTagName('script');
eval(scripts[scripts.length - 1].getAttribute('onload'));
}
Mientras sigamos llevando adelante el espíritu de excavación, creo que habrá más soluciones inspiradoras -.-
Después de resumir las soluciones anteriores, ¿cuál es la mejor? Mi respuesta es: ¡No existe lo mejor, sólo lo más adecuado! Porque para diferentes aplicaciones y diferentes conceptos, la definición de "bien" es diferente.
Por ejemplo, mi filosofía actual es que no es necesario cumplir plenamente con los estándares. En cuanto a las variables globales, lo que debemos evitar es el abuso, no el uso. Por lo tanto, elegiré la solución de variable global, que es la más simple y tiene mejor rendimiento.