Javascriptプレミアムプログラミング読書ノート(第2章)

4831 ワード

第二章HTMLでのJavascriptの使用
2.1要素
遅延スクリプト(defer=「defer」)は、スクリプトが実行時にページの構造に影響を与えないことを示し、スクリプトはページ全体の解析が完了してから実行されます.ブラウザにすぐにダウンロードするように伝えるのと同じですが、実行を遅らせます.HTML 5では、スクリプトが現れる順番に実行されるように規定されています.
非同期スクリプト(async)複数のスクリプトファイルがある場合、実行順序が不確定である場合、asyncプロパティを指定する目的は、ページが2つのスクリプトのダウンロードと実行を待たずに、ページの他のコンテンツを非同期でロードすることです.
XHTMLコードのルールはHTMLを書くよりもずっと厳格で、次のコードブロックはHTMLでは有効ですが、XHMTLでは無効です
<script type="text/javascript">
    function compare(a, b) {
        if(a < b) {
            alert("A is less than B");
        } else if (a > b) {
            alert("A is greater than B"):
        } else {
            alert("A is equal to B");
        }
  }
</script>

XHTMLでは<(より小さい番号)はXHMTLでは新しいラベルの解析を開始するものとして扱われますが、ラベルとしては、より小さい番号の後ろにスペースを付けることができないため、構文エラーが発生します.<より小さい番号の代わりに.
再XHTMLで正常に実行できることを保証するもう一つの方法は、Javascriptコードを1つのCDataクリップで含むことです.以下に示します.
<script type="text/javascript"><![CDATA{
    function compare(a, b) {
        if(a < b) {
            alert("A is less than B");
        } else if (a > b) {
            alert("A is greater than B"):
        } else {
            alert("A is equal to B");
        }
  }
}]></script>

CDATA対応のブラウザでは、この方法で問題を解決することができます.また、XHTML対応のブラウザも少なくありません.CDATAクリップはサポートされていません.Javascriptを使用してタグを注釈すればいいです.以下に示します.
<script type="text/javascript">
//<![CDATA{
    function compare(a, b) {
        if(a < b) {
            alert("A is less than B");
        } else if (a > b) {
            alert("A is greater than B"):
        } else {
            alert("A is equal to B");
        }
  }
//}]>
</script>

 
2.3文書モード
ハイブリッドモード(quirks mode)はIEの動作をIE 5と同じにし、
標準モード(standards mode)はIEの挙動を標準挙動に近づける.
この2つのモードは主にCSSコンテンツのレンダリングに影響しますが、Javascriptの解釈実行にも影響します.
ドキュメントの開始時にドキュメントタイプ宣言が見つからない場合は、すべてのブラウザがデフォルトでハイブリッドモードをオンにします.この方法は推奨されません.このモードでのブラウザの動作の違いは非常に大きいです.
IEはまた、ブラウザの多くが標準に合致する準標準モード(almost standards mode)を提案した.準標準モードは、遷移型またはフレームセット型のドキュメントタイプによってトリガーできます.
2.4