Yipin Sky Web Development Code Station ASP e outros blogs clássicos de coleção de códigos relacionados ao desenvolvimento Web - comunicação ASP Grupo QQ 12814238 (completo) 14725152 (aberto) Página inicial ASPJS/AJAX reconstrução e otimização abrangente coleta de banco de dados de código e compartilhamento de sistema operacional de entretenimento audiovisual Artigo anterior | Próximo Um artigo JS/AJAX
Como passar parâmetros para arquivos JavaScript em JavaScript Autor: Yipin Data: 23/03/2009
Tamanho da fonte: pequeno, médio,
grande
Esta é a maneira mais simples de usar variáveis globais, como o Google Adsense:
código do programa
<script type="texto/javascript">
google_ad_client = 'pub-3741595817388494';
</script>
<script type="text/javascript" src=" http://pagead2 .
googlesyndication.com/pagead/show_ads.js"></script>
A desvantagem é que variáveis globais são introduzidas. Existem duas variações de como introduzir arquivos:
código do programa
// Variante 1: Use document.write para saída
<script type="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 do programa
// Variação 2: Use a operação DOM para anexar ao cabeçalho
<script type="texto/javascript">
G_BEACON_ATP = 'categoria=&userid=&channel=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 baseado na aplicação real
. Nota: A variante 1 é usada em muitos aplicativos.
código do programa
<script type="texto/javascript">
// Apenas escape diretamente:
document.write('<script type="text/javascript" src="test.js"></script>');
// Ou curta a página inicial do Yahoo!
document.write('<scr' + 'ipt type="text/javascript" src="test.js"></scr' + 'ipt>');
</script>
2.
Em comparação com a obtenção e análise do src do elemento de script e de todas as variáveis, preferimos passar os parâmetros da seguinte forma:
código do programa
<script type="text/javascript" src="test.js?a=b&c=d"></script>
O principal problema é como obter o atributo src.
O primeiro método é adicionar o atributo id ao script, obter o script atual por meio do id e, em seguida, usar expressões regulares para extrair os parâmetros de src. A desvantagem é que na especificação HTML 4.01, o elemento SCRIPT não possui um atributo id. Esta lacuna não é uma deficiência. Afinal, é melhor acreditar em normas do que não ter normas.
O segundo método é usar o nome do arquivo js como um gancho. Depois de passar document.getElementsByTagName('script') no código js, o arquivo js atual é correspondido por regras regulares. Este método é muito ortodoxo, mas requer um nome de arquivo exclusivo. A desvantagem é que há muito código, não é refinado e tem um leve impacto no desempenho.
O método três é simplesmente adicionar dados de atributos personalizados com base no método um:
código do programa
<script id="testScript" type="text/javascript" src="test.js" data="a=b&c=d"></script>
No arquivo test.js os parâmetros passados são obtidos através da seguinte linha:
código do programa
var scriptArgs = document.getElementById('testScript').getAttribute('dados');
O quarto método é usar o mecanismo de execução sequencial de js (o arquivo js pode ser carregado de forma síncrona ou assíncrona, mas quando executado, deve ser executado na ordem do fluxo do documento). Quando um arquivo js é executado, ele deve ser o último entre os arquivos js "carregados":
código do programa
var scripts = document.getElementsByTagName('script');
var currentScript = scripts[scripts.length - 1];
O método quatro é mais hábil e genial do que o método dois.
Em termos de simplificação e desempenho de código, Método 3>Método 1>Método 4>Método 2
Resumo: Se você se preocupa com os padrões, recomendo o método 4; 3 é recomendado.
3. Plano de inspiração Se você é um fã fiel de John Resig como eu, talvez ainda se lembre das "Degrading Script Tags" que foram muito discutidas em agosto do ano passado. John Resig abriu uma porta de imaginação para nós. Para o problema deste artigo, os seguintes “maus caminhos” também podem ser usados para alcançá-lo:
código do programa
<script type="text/javascript" src="test.js">
TB.SomeApp.scriptArgs = 'a=b&c=d';
</script>
No arquivo test.js:
código do programa
TB = {};
var scripts = document.getElementsByTagName("script");
eval(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:
código do programa
<script type="text/javascript" src="test.js">a=b&c=d</script>
arquivo js:
código do programa
var scripts = document.getElementsByTagName("script");
var scriptArgs = scripts[ scripts.length - 1 ].innerHTML.replace(/[s]/g, '');
A imaginação é infinita, você também pode usar onload:
código do programa
<script type="text/javascript" src="test.js" xxxxx="TB.SomeFun('a=b&c=d')"></script>
Basta definir a função no arquivo js:
código do programa
TB = {};
TB.SomeFun = function(arg) { //código };
O código acima pode ser executado corretamente em navegadores não-IE. Para algo estúpido, você precisa adicionar algumas linhas de código:
código do programa
if(janela.ActiveXObject) {
var scripts = document.getElementsByTagName('script');
eval(scripts[scripts.length - 1].getAttribute('onload'));
}
Enquanto continuarmos a levar adiante o espírito de escavação, acredito que haverá mais soluções inspiradoras -.-
Depois de resumir as soluções acima, qual solução é a melhor? Minha resposta é: Não existe o melhor, apenas o mais adequado! Porque para diferentes aplicações e diferentes conceitos, a definição de “bom” é diferente.
Por exemplo, a minha filosofia actual é que não é necessário cumprir integralmente as normas. Quanto às variáveis globais, o que precisamos de evitar é o abuso e não a utilização. Portanto, escolherei a solução de variável global, que é a mais simples e tem melhor desempenho.