Analisei o JavaScript há um tempo e me senti bem comigo mesmo na época. Agora que penso nisso, sinto que não é nada. A tarefa de hoje é estudar o capítulo sobre o ciclo de vida da página do cliente no asp.net ajax. No entanto, fiquei um pouco confuso com o conteúdo deste capítulo. Nenhuma dessas dúvidas é mencionada no livro.
1. Qual é o processo detalhado de carregamento da página HTML? Qual é a prioridade dos elementos da página durante o carregamento?
2. O escopo do JavaScript, o escopo das variáveis e o relacionamento entre os diferentes segmentos de script?
3. Qual é o ciclo de vida das páginas HTML?
Essas perguntas realmente me atingiram. Sem entendê-los, não consigo ver os princípios subjacentes através da estrutura asp.net ajax. Eu só sei disso, mas não sei por quê.
No caso de ampla busca de informações na Internet. Tenho algumas respostas.
Sobre o carregamento de HTML:
De modo geral, o HTML é carregado e analisado de cima para baixo, enquanto gera objetos DOM. Quanto ao que é misturado no HTML:
documento.write("xxxx");
<script type="text/javascript" src="aaa.js"></script>
Qual é a ordem deles? Ainda assim, se você encontrar essas coisas ao analisar HTML, você irá parar de analisar e executar essas instruções geradas. Se um link externo for inserido no meio, você irá analisar e executar o js correspondente ao link externo. As declarações a seguir têm resultados diferentes para navegadores diferentes:
<script type="text/javascript" src="aaa.js"></script>
em ou seja. Ele não esperará que o aaa.js seja baixado e analisado. Ele criará outro thread para lidar com ele e o thread principal será ignorado. Mas em ss. Ele aguardará até que o aaa.js seja baixado, analisado e executado.
Em relação à execução de javascript, consulte os materiais de referência anexados ao final deste artigo, que apresentam uma discussão detalhada.
Sobre o ciclo de vida das páginas em HTML:
Os dois eventos mais importantes são onLoad e onUnLoad. onLoad é acionado quando a página é carregada. onUnLoad é acionado após o DOM da página ser destruído. No entanto, onLoad é um pouco especial. Consulte também os materiais de referência anexados no final deste artigo. Certifique-se de chamar a atenção.
Analisei o código-fonte HTML de vários sites e encontrei o seguinte código:
<div><script src="/ggjs/view1602_w.js"></script></div>
Este é o código para um site exibir anúncios na página. Em sites nacionais, os anúncios exibidos geralmente usam iframes para apresentar páginas de terceiros, mas aqui eles são gerados diretamente usando segmentos javascript. Mais tarde, olhei o código html gerado pelo blog 163. Era muito anormal. Todo o código HTML possui apenas uma prateleira e todas as páginas são geradas por meio de js. Vi que vários arquivos js foram introduzidos atrás da página e, finalmente, houve uma chamada para a função initAll no final da página. Não estudei seu código js com cuidado, suspeito que ele coloque todas as funções da camada de apresentação no arquivo js do cliente. O lado do servidor consiste em apenas alguns racks de páginas e muitos serviços da web. É realmente de tirar o fôlego.
Em relação a um evento que desencadeia múltiplas funções de resposta:
Certa vez pensei em implementar algo semelhante a um delegado em C#. Os eventos JavaScript podem ser associados a mais de uma função. Uma lista de eventos pode ser acionada por vez. Tenho estudado asp.net ajax esses dias e existe um pacote para isso.
No asp.net ajax, um elemento dom pode ser encapsulado em um objeto Sys.UI.DomElement no asp.net ajax. Então você pode usar seus métodos: addHandler(), addHandlers(), removeHander() para operar a lista de eventos. Quão conveniente. Eu não entendi muito bem esse princípio na época. Hoje vi os dois trechos de código no material de referência abaixo, o que me fez entender perfeitamente os detalhes:
1. Use a interface no dom 2:
Copie o código do código da seguinte forma:
if(document.addEventListener){
window.addEventListener('carregar',f,falso);
window.addEventListener('carregar',f1,false);
…
}outro{
window.attachEvent('onload',f);
window.attachEvent('onload',f1);
…
}
Acontece que esse conceito já existia no DOM. Só então eu soube. Parece que ainda há muitas coisas que não entendo sobre Dom.
Em segundo lugar, este método é implementado exclusivamente à mão. Veja o código abaixo:
Copie o código do código da seguinte forma:
função addLoadEvent(func) {
var oldonload = janela.onload;
if (typeof window.onload! = 'função') {
janela.onload=func;
} outro {
janela.onload=função(){
if (oldonload) {
oldonload();
}
função();
}
}
}
Esta função foi escrita de forma muito inteligente. Use funções anônimas para fazer isso!