1. Utilize variáveis globais
Esta é a maneira mais fácil, como o Google Adsense:
A cópia do código é a seguinte:
<script type = "text/javascript"> google_ad_client = 'pub-3741595817388494'; </script> <script type = "text/javascript" src = "http: // pagead2. googlesyndication.com/pagead/show_ads.js"> </Script>
A desvantagem é que as variáveis globais são introduzidas. Existem outras duas variantes do caminho para introduzir arquivos:
// Variação 1: use document.write para sair <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> // Variação 2: use o DOM para aplicar na cabeça <script type = "text/javascript"> g_beacon_atp = 'category = & userID = & canal = 112ad_id ='; document.getElementsByTagName ('Head') [0] .AppendChild (Document. CreateElement ('Script')) .src = 'http: //taobao.com/atp.js'; </script> // Nota: O código acima é um código de demonstração virtual com base no aplicativo realNota: A variedade 1 é usada muitas vezes e os métodos de escrita comuns são os seguintes:
<script type = "text/javascript"> // escape diretamente: document.write ('<script type = "text/javascript" src = "test.js"> </script>'); // ou como o Yahoo! Página inicial: document.write ('<scr'+'ipt type = "text/javascript" src = "test.js"> </scr'+'ipt>'); </script>2. Obtenha e analise o SRC do elemento de script
Comparado com todas as variáveis, preferimos passar parâmetros como o seguinte:
<script type = "text/javascript" src = "test.js? a = b & c = d"> </script>
O problema principal é como obter o atributo SRC.
O primeiro método é adicionar um atributo de identificação ao script, obter o script atual através do ID e usar regularmente para remover os parâmetros do SRC. A desvantagem é que, na especificação HTML 4.01, o elemento de script não possui atributo de identificação. Essa falha não pode ser considerada uma falha, afinal, é melhor não ter padrões do que acreditar nos padrões.
O segundo método é usar o nome do arquivo JS como um gancho. Depois de passar o documento.getElementsByTagName ('Script') no código JS, o arquivo JS atual será correspondido regularmente. Este método é ortodoxo, mas requer um nome de arquivo exclusivo. A desvantagem é que há muito código e não é refinado, o que terá um pequeno impacto no desempenho.
O método 3 é adicionar dados de atributo personalizado com base no método 1:
<script id = "testscript" type = "text/javascript" src = "test.js" data = "a = b & c = d"> </script>
No arquivo test.js, use a linha a seguir para obter os parâmetros aprovados:
var scriptargs = document.getElementById ('testscript'). getAttribute ('dados'); O método 4 é usar o mecanismo de execução seqüencial do JS (o carregamento dos arquivos JS pode ser síncrono ou assíncrono, mas ao executar, deve ser executado na ordem no fluxo de documentos). Quando um determinado arquivo JS é executado, ele deve ser o último no arquivo JS "carregado":
var scripts = document.getElementsByTagName ('script'); var CurrentScript = scripts [scripts.length - 1]; O método 4 é mais inteligente e genial que o método 2.
Da perspectiva da simplificação e desempenho do código, método 3> Método 1> Método 4> Método 2
Resumo: Se você se preocupa muito com os padrões, recomende o método 4; Se você acha que não é necessário cumprir completamente os padrões como eu, recomende o método 3.
Escreva um programa de teste
<! Doctype html> <html> <script src = "a2.js"> </script> <script src = "a2.js"> </script> <script src = "a2.js"> </script> <cript src = "a2.js"> </script>
A2.JS
var scripts = document.getElementsByTagName ('script'); var CurrentScript = scripts.length; alert (CurrentScript);
Imprima separadamente
1 2 3
3. Plano de inspiração
Se você é os fãs leais de John Resig como eu, talvez você ainda se lembre das "tags de script degradantes" que foram discutidas muito em agosto passado. John Resig abre uma porta imaginária para nós. Para as perguntas deste artigo, também podemos usar os seguintes "caminhos malignos" para alcançá -lo:
<script type = "text/javascript" src = "test.js"> tb.someapp.scriptargs = 'a = b & c = d'; </script>
No arquivo test.js:
Tb = {}; Tb.someApp = {}; var scripts = document.getElementsByTagName ("script"); avaliar (scripts [scripts.length - 1] .innerhtml);Isso armazena os parâmetros na variável TB.SomeApp.Scriptargs.
Quando não há muitos parâmetros, você pode até fazer isso:
<script type = "text/javascript" src = "test.js"> a = b & c = d </script>
No arquivo JS:
var scripts = document.getElementsByTagName ("script"); var scriptargs = scripts [scripts.length - 1] .innerhtml.replace (/[s]/g, '');A imaginação é infinita, você também pode usar o Onload:
<script type = "text/javascript" src = "test.js" onLload = "tb.wonswerfun ('a = b & c = d')"> </script>
Basta definir a função no arquivo JS:
Tb = {}; Tb.somefun = function (arg) {// code};O código acima pode ser executado corretamente em navegadores que não são da AI. Para o estúpido, ou seja, você deve adicionar algumas linhas de código:
if (window.activexObject) {var scripts = document.getElementsByTagName ('script'); Eval (scripts [scripts.length - 1] .getAttribute ('onload'));}