1. O método de incorporação de Javascript em HTML é colocar diretamente o código Javascript entre o par de tags <script> e </script>. Use o atributo src da tag <script /> para formular um arquivo js externo e colocá-lo em. o manipulador de eventos, como: <p onclick="alert('Eu sou o Javascript executado pelo evento onclick')">Clique em mim</p>
Como corpo do URL, este URL usa o protocolo Javascript: especial, como: <a href="javascript:alert('Eu sou um javascript executado pelo protocolo javascript:')">Clique em mim</a>
Use o método document.write() do próprio javascript para escrever um novo código javascript. Use Ajax para obter o código javascript de forma assíncrona e, em seguida, execute
o terceiro e o quarto métodos. O Javascript escrito precisa ser acionado antes de poder ser executado. for especialmente configurado, a página será carregada e não será executada.
2. A ordem de execução do Javascript na página O código Javascript na página faz parte do documento HTML, portanto a ordem em que o Javascript é executado quando a página é carregada é a ordem em que a tag de introdução <script /> aparece. . Na tag <script /> ou através de src O JS externo importado é executado na ordem em que suas instruções aparecem, e o processo de execução faz parte do carregamento do documento.
As variáveis e funções globais definidas por cada script podem ser chamadas por scripts executados posteriormente.
A chamada da variável deve ter sido declarada previamente, caso contrário o valor da variável obtido será indefinido.
<script type="text/javscrpt">//<![CDATA[
alert(tmp); //saída indefinida
var tmp = 1;
alerta(tmp); //saída 1
//]]></script>
No mesmo script, a definição da função pode aparecer após a chamada da função. No entanto, se estiver em dois trechos de código e a chamada da função estiver no primeiro trecho de código, um erro de função indefinida será relatado.
<script type="text/javscrpt">//<![CDATA[
aa(); //Erro do navegador
//]]></script>
<script type="text/javscrpt">//<![CDATA[
aa(); //Saída 1
função aa(){alert(1);}
//]]></script>
document.write() gravará a saída no local do documento de script. Depois que o navegador analisar o conteúdo do documento onde documemt.write() está localizado, ele continuará a analisar a saída do conteúdo por document.write(), e continue a analisar o documento HTML.
<script type="text/javascript">//<![CDATA[
document.write('<script type="text/javascript" src="test.js"></script>');
document.write('<script type="text/javascript">');
documento.write('alert(2);')
document.write('alert("Eu sou" + tmpStr);');
document.write('</script>');
//]]></script>
<script type="text/javascript">//<![CDATA[
alerta(3);
//]]></script>
O conteúdo de test.js é:
var tmpStr = 1;
alerta(tmpStr);
A ordem dos valores pop-up no Firefox e Opera é: 1, 2, sou 1, 3
A ordem dos valores pop-up no IE é: 2, 1, 3. Ao mesmo tempo, o navegador relata um erro: tmpStr é indefinido. O motivo pode ser que o IE não espera o código Javascript no SRC. ser carregado antes de executar a próxima linha quando document.write. Portanto, 2 aparece primeiro, e quando document.write('document.write("I am" + tmpStr)') é executado e tmpStr é chamado, tmpStr não é definido , resultando em um erro.
Para resolver esse problema, você pode usar o princípio da análise de HTML para analisar uma tag HTML e, em seguida, executar a próxima e dividir o código para conseguir isso:
<script type="text/javascript">//<![CDATA[
document.write('<script type="text/javascript" src="test.js"></script>');
//]]></script>
<script type="text/javascript">//<![CDATA[
document.write('<script type="text/javascript">');
documento.write('alert(2);')
document.write('alert("Eu sou" + tmpStr);');
document.write('</script>');
//]]></script>
<script type="text/javascript">//<![CDATA[
alerta(3);
//]]></script>
Dessa forma, a ordem dos valores de saída no IE e em outros navegadores é consistente: 1, 2, sou 1, 3.
3. Como alterar a ordem de execução do Javascript na página usando onload
<script type="text/javascript">//<![CDATA[
janela.onload=f;
função f(){alert(1);}
alerta(2);
//]]></script>
A ordem dos valores de saída é 2, 1.
Deve-se notar que se houver vários winodws.onload, apenas o mais eficaz terá efeito:
window.onload = function(){f();f1();f2();.... . }
Utilizando tipos de eventos DOM de nível 2
if(document.addEventListener){
window.addEventListener('carregar',f,falso);
window.addEventListener('carregar',f1,falso);
...
}outro{
window.attachEvent('onload',f);
window.attachEvent('onload',f1);
...
}
Defer pode ser usado no IE. A função de defer é carregar o código e não executá-lo imediatamente. Ele será executado após o carregamento do documento. É um pouco semelhante ao window.onload, mas não possui as limitações do window. .onload pode ser usado repetidamente, mas apenas em É válido no IE, portanto o exemplo acima pode ser modificado para
<script type="text/javascript">//<![CDATA[
document.write('<script type="text/javascript" src="test.js"></script>');
document.write('<script type="text/javascript" defer="defer">');
documento.write('alert(2);')
document.write('alert("Eu sou" + tmpStr);');
document.write('</script>');
//]]></script>
<script type="text/javascript">//<![CDATA[
alerta(3);
//]]></script>
Dessa forma, o IE não reportará um erro e a ordem dos valores de saída será: 1, 3, 2, sou 1.
Quando o analisador HTML encontrar um script, ele deverá encerrar a análise do documento normalmente e aguarde a execução do script. Para resolver este problema, o padrão HTML4 define defer. Use defer para solicitar que o navegador continue analisando o documento HTML e atrase a execução do script. Esse atraso é muito útil quando um script é carregado de um arquivo externo, para que o navegador não precise esperar o carregamento de todos os arquivos externos antes de continuar a execução, o que pode efetivamente melhorar o desempenho. O IE é atualmente o único navegador que suporta o atributo defer, mas o IE não implementa o atributo defer corretamente porque os scripts atrasados são sempre atrasados até o final do documento, em vez de apenas atrasados para o próximo script não atrasado. Isso significa que a ordem de execução de scripts atrasados no IE é bastante confusa e quaisquer funções e variáveis que não sejam exigidas por scripts subsequentes não atrasados não podem ser definidas. O tempo de execução de todos os scripts defer no IE deve ser após o estabelecimento da árvore de documentos HTML e antes de window.onload.
Aproveite o Ajax.
Como o xmlhttpRequest pode determinar o status de carregamento de documentos externos, ele pode alterar a ordem de carregamento do código.