1. Utilizar variables globales
Esta es la forma más fácil, como Google Adsense:
La copia del código es la siguiente:
<script type = "text/javaScript"> google_ad_client = 'PUB-3741595817388494'; </script> <script type = "text/javascript" src = "http: // pagead2. googlesyndication.com/pagaad/show_ads.js"> </script>
La desventaja es que se introducen variables globales. Hay otras dos variantes de la forma de introducir archivos:
// Variación 1: use document.write to output <script type = "text/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> // Variación 2: Use DOM para aplicar a la cabeza <script type = "text/javaScript"> g_beacon_atp = 'category = & userId = & canal = 112Ad_id ='; document.getElementsByTagName ('Head') [0] .AppendChild (documento. CreateElement ('script')) .src = 'http: //taobao.com/atp.js'; </script> // NOTA: El código anterior es un código de demostración virtual basado en la aplicación realNota: La variedad 1 se usa muchas veces, y los métodos de escritura comunes son los siguientes:
<script type = "text/javaScript"> // escapar directamente: document.write ('<script type = "text/javaScript" src = "test.js"> </script>'); // o como yahoo! HomePage: document.write ('<scr'+'ipt type = "text/javaScript" src = "test.js"> </cr'+'ipt>'); </script>2. Obtenga y analice el SRC del elemento de script
En comparación con todas las variables, preferimos pasar parámetros como los siguientes:
<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 un atributo de ID al script, obtener el script actual a través de ID y luego usar el regular para eliminar los parámetros de SRC. La desventaja es que en la especificación HTML 4.01, el elemento de script no tiene atributo de identificación. Esta deficiencia no puede considerarse una deficiencia, después de todo, es mejor no tener estándares que creer en los estándares.
El segundo método es usar el nombre del archivo JS como un gancho. Después de pasar document.getElementsBytagName ('script') en el código JS, el archivo JS actual se igualará regularmente. Este método es ortodoxo, pero requiere un nombre de archivo único. La desventaja es que hay mucho código y no se refina, lo que tendrá un ligero impacto en el rendimiento.
El método 3 es agregar datos de atributo personalizados basados en el método 1:
<script id = "testScript" type = "text/javaScript" src = "test.js" data = "a = b & c = d"> </script>
En el archivo test.js, use la siguiente línea para obtener los parámetros aprobados:
var scriptargs = document.getElementById ('testScript'). getAttribute ('data'); El método 4 es utilizar el mecanismo de ejecución secuencial de JS (la carga de archivos JS puede ser sincrónico o asíncrono, pero al ejecutar, debe ejecutarse en el orden en la secuencia de documentos). Cuando se ejecuta cierto archivo JS, debe ser el último en el archivo JS "cargado":
var scripts = document.getElementsBytagName ('script'); var corredscript = scripts [scripts.length - 1]; El método 4 es más inteligente y genio que el método 2.
Desde la perspectiva de la simplificación y el rendimiento del código, Método 3> Método 1> Método 4> Método 2
Resumen: si se preocupan mucho por los estándares, recomiende el método 4; Si cree que no es necesario cumplir completamente con los estándares como yo, recomiende el Método 3.
Escribe un programa de prueba
<! Doctype html> <html> <script src = "a2.js"> </script> <script src = "a2.js"> </script> <script src = "a2.js"> </script> <script src = "a2.js"> </script> </html>
a2.js
var scripts = document.getElementsBytagName ('script'); var corredscript = scripts.length; alert (corralscript);
Imprimir por separado
1 2 3
3. Plan de inspiración
Si eres los fanáticos leales de John Resig como yo, tal vez todavía recuerdas las "etiquetas de guión degradantes" que se discutió mucho en agosto pasado. John Resig nos abre una puerta imaginaria. Para las preguntas en este artículo, también podemos usar los siguientes "caminos malvados" para lograrlo:
<script type = "text/javaScript" src = "test.js"> tb.somepp.scriptargs = 'a = b & c = d'; </script>
En el archivo test.js:
Tb = {}; Tb.somepp = {}; var scripts = document.getElementsBytagName ("script"); eval (scripts [scripts.length - 1] .innerhtml);Esto almacena los parámetros en la variable tb.somepp.scriptargs.
Cuando no hay muchos parámetros, incluso puede hacer esto:
<script type = "text/javaScript" src = "test.js"> a = b & c = d </script>
En el archivo JS:
var scripts = document.getElementsBytagName ("script"); var scriptargs = scripts [scripts.length - 1] .innerhtml.replace (/[s]/g, '');La imaginación es interminable, también puedes usar Onload:
<script type = "text/javaScript" src = "test.js" onload = "tb.somefun ('a = b & c = d')"> </script>
Simplemente defina la función en el archivo JS:
Tb = {}; Tb.Somefun = function (arg) {// código};El código anterior puede ejecutarse correctamente en navegadores que no son II. Para el estúpido, es decir, tienes que agregar algunas líneas de código:
if (window.activexObject) {var scripts = document.getElementsByTagName ('script'); eval (scripts [scripts.length - 1] .getAttribute ('onload'));}