javascriptとjavascriptのブラウザにおけるロード順序の問題を討論します.
一、htmlページの詳細な読み込みプロセスは何ですか?ページ要素の読み込み時の優先度は何ですか?
二、javascriptのスコープ、変数のスコープ、スクリプトセグメント間の関係?
三、htmlページのライフサイクルは?
これらの問題は本当に私の死角に当たった.これらを知らないと、asp.net ajaxの枠組みを通して、その下の原理を見ることができません.それだけは知っていますが、理由は分かりません.
インターネットで広く資料を調べている場合.答えの一部を獲得しました.
htmlのロードについて:
全体として、htmlは上から下までの順にロードしながら解析し、domオブジェクトを生成し、htmlに含める:
document.write(「xxxxx」);
などの順番はどうなりますか?まだ同じです.htmlを解析する時にこれらのものに出会うと解析を停止し、これらの生成文を実行します.もし中間に外部リンクを挿入すると、外部リンクに対応するjsを解析して実行します.以下のステートメントには、ブラウザによって異なる結果があります.
<p><script type=“text/javascript”src=“aa.js”/
<p>はieの中にあります.aaa.jsがダウンロードして解決するのを待つことはありません.他のスレッドを作成して解決します.メインスレッドが越えます.でも、スタッフの中で.aaa.jsのダウンロード、解析、実行が完了するまで待つことができます.p>
<p>javascriptの実行状況については、本文の後に添付されている参考資料を参照してください.p>
<p>htmlページのライフサイクルについて:
<p>最も重要な二つの事件はオンライン、オンリーロードです.オンラインロードはページの読み込みが完了した時にトリガします.OnUniLoadはページのdomで破壊し終わったらトリガします.ただし、オンラインはちょっと特殊な状況がありますので、本文の後に添付した参考資料も参照してください.注意を喚起しなければなりません.p>
いくつかのサイトのソースコードを見ましたが、下記のコードを発見しました.
<div class=「ad 1602」><script src=「/gggJs/view 1602_w.js」/>
これはあるウェブサイトがページに広告を表示するコードです.国内のウェブサイトでは、広告は基本的にiframeで第三者ページを導入します.ここでは直接javascriptで作成します.それから、私はまた163ブログで生成したhtmlコードを見ました.全体のhtmlコードは棚一つだけで、すべてのページの生成はjsを通じて行われます.そのページの後ろにいくつかのjsファイルが紹介されているのを見ました.最後にページの最後にinitAll関数の呼び出しがあります.私はそのjsコードを詳しく調べていませんでした.すべての表現層の機能をクライアントのjsファイルに入れたのではないかと疑っています.サーバーの端はわずかなページ棚と多くのwebservicesだけです.本当に感嘆して見ました.p>
<p>一つのイベントについて複数の応答関数をトリガする:
<p>自分でc璖中委託のようなものを実現したいと思ったことがあります.javascriptのイベントを一つのfunctionに関連付けるだけではない.一度にイベントリストをトリガすることができます.ここ数日asp.net ajaxを研究していますが、中にはこのパッケージがあります.p>
asp.net ajaxでは、一つのdom元素をasp.net ajaxのSys.UID.DomElementの対象にパッケージ化することができます.その後、その方法で、addHandler()、addHandlers()、RemoveHander()はイベントリストを操作することができます.便利ですね.その原理はよく分かりませんでした.今日は後の参考資料の二つのコードを見て、この中間の詳細を徹底的に分かりました.
一、dom 2のインターフェースを使う:
if(document.addEventListener){
window.addEventListener('load',f,false);
window.addEventListener('load',f1,false);
……
}else{
window.attachEvent('onload',f);
window.attachEvent('onload',f1);
……
}
なるほど、domの中にはとっくにこの概念がありました.やっと分かりました.私はdomについてまだ知らないところが多いようですね.
<p>二、この方法は手で実現しました.以下のコードを参照してください.
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
この関数は巧みに書かれています.匿名関数で解決!
<div class=「clearfix」>
<span id=「artbaot」class=「jbTestPos」/>