目次
スクリプトのブロック特性
原理は、XMLHttpReques (XHR) オブジェクトを使用して JS コードの一部を動的に取得し、それをドキュメントに挿入することです。
JavaScriptの読み込みと実行
ホームページ ウェブフロントエンド htmlチュートリアル HTML_html/css_WEB-ITnoseのscriptタグに関する研究

HTML_html/css_WEB-ITnoseのscriptタグに関する研究

Jun 24, 2016 am 11:43 AM

スクリプトのブロック特性

async または defer 属性のないスクリプト、およびインライン スクリプトは、ブラウザーがページの解析を続行する前に、すぐにフェッチされて実行されます - MDN

JavaScript のブロック特性。実際、ほとんどのブラウザはユーザー インターフェイス (UI) の更新と JavaScript の実行の両方に 1 つのプロセスを使用するため、JavaScript が長いほど、一度に 1 つのプロセスしか発生しません。実行に時間がかかるほど、ブラウザがユーザー入力に自由に応答できるようになるまでの時間が長くなります。 - Nicholas C. Zakas「高性能 JavaScript」

上記で引用した 2 つの引用符の意味は、ブラウザが DOM を解析するときの意味です。ドキュメントが検出されると、スクリプト タグ (defer および async 属性なし) が検出されると、すぐにダウンロードされて実行されます。同時に、スクリプト コードの実行が完了するまで、ブラウザによるドキュメントの解析が停止します。このブロック動作は、ブラウザーの UI レンダリング、インタラクティブな動作などがシングルスレッド操作であるために発生します。他方、次のコードのように、スクリプト内のコードが後続のドキュメントの解析に影響を与える可能性があります。

そうですか

これは、ブロック機能はユーザー エクスペリエンスに深刻な影響を及ぼします。 以下にいくつかの最適化ソリューションを示します。

    ドキュメントのブロックを減らすには、スクリプトをドキュメントの前に配置するのが最善です。 の。
  • 依存関係に従ってスクリプトをファイルに配置してみてください
しかし、より良い方法は、次のノンブロッキング スクリプト (ノンブロッキング スクリプト) の方法です:

1. Deferred Script (遅延スクリプト)

スクリプト defer があります。この属性を持つスクリプトは、このスクリプトが DOM を変更しないことを示しているため、このスクリプトはドキュメント ツリーが完全に解析された後にトリガーされます (ドキュメントが解析された後に実行されます)。ただし、この属性はブラウザーによって所有されません。サポート。

2. 動的スクリプト要素

原則は、スクリプトを使用してスクリプト要素を作成し、スクリプトを動的に追加する必要がある URL を src に設定し、このスクリプトを DOM に追加することです。場合によっては、動的スクリプトのロード後に特定の操作を実行する必要があります。これには、スクリプトの onload イベントを通じてコールバック関数を追加する必要があります。次の実装コード:

html<script type="text/javascript">  document.write("The date is " + (new Date()).toDateString());</script>
ログイン後にコピー

場合によっては、動的にロードされたスクリプトをロードした順序で実行する必要がありますが、上記の実装では、ロードされたスクリプトがダウンロードの完了直後に実行されることは保証されません。定義した順序で実行されます。この問題を解決するのは難しいことではありません。次のコードを参照してください。

jsfunction loadJS(url, callback){  var script = document.createElement('script');  script.type = 'text/javascript';  if(script.readyState){  // 兼容IE的旧版本    script.onreadystatechange = function(){      if(script.readyState == 'loaded' || script.readyState == 'complete'){        script.onreadystatechange = null;        callback();      }    }  }  else{     script.onload = function(){      callback();    }      }  script.src = url;  document.getElementsByTagName('head')[0].appendChild(script);}
ログイン後にコピー

動的に追加する必要があるスクリプトが多数ある場合は、このように記述するときにも問題が発生します。 LABjs などの既製のライブラリ

3. XMLHttpRequest スクリプト インジェクション (XHR 動的挿入)

原理は、XMLHttpReques (XHR) オブジェクトを使用して JS コードの一部を動的に取得し、それをドキュメントに挿入することです。

他の方法と比較した利点の 1 つは、「遅延実行」できることです。つまり、JS コードが最初にダウンロードされ、実行されず、必要なときに (?) 実行できます (前の動的スクリプトは直後に実行されます)。ダウンロード)。実装コード:

jsloadJS('a.js', function(){  loadJS('b.js', function(){    loadJS('c.js', function(){      app.init();    })  })})
ログイン後にコピー

デメリットはクロスドメインリクエストができないこと

参考

JavaScriptの読み込みと実行

  • MDNスクリプト要素
  • Nicholas著『High Performance JavaScript』の第1章「読み込みと実行」 C.ザカス
  • このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    HTMLは初心者のために簡単に学ぶことができますか? HTMLは初心者のために簡単に学ぶことができますか? Apr 07, 2025 am 12:11 AM

    HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

    HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

    HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

    HTMLでの開始タグの例は何ですか? HTMLでの開始タグの例は何ですか? Apr 06, 2025 am 12:04 AM

    Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

    HTML、CSS、およびJavaScriptの理解:初心者向けガイド HTML、CSS、およびJavaScriptの理解:初心者向けガイド Apr 12, 2025 am 12:02 AM

    webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

    WebアノテーションにY軸位置の適応レイアウトを実装する方法は? WebアノテーションにY軸位置の適応レイアウトを実装する方法は? Apr 04, 2025 pm 11:30 PM

    Y軸位置Webアノテーション機能の適応アルゴリズムこの記事では、単語文書と同様の注釈関数、特に注釈間の間隔を扱う方法を実装する方法を探ります...

    Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Apr 04, 2025 pm 11:54 PM

    GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

    CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? CSS3とJavaScriptを使用して、クリック後に周囲の写真を散乱および拡大する効果を実現する方法は? Apr 05, 2025 am 06:15 AM

    画像をクリックした後、散乱と周囲の画像を拡大する効果を実現するには、多くのWebデザインがインタラクティブな効果を実現する必要があります。特定の画像をクリックして周囲を作成してください...

    HTML、CSS、およびJavaScript:Web開発者に不可欠なツール HTML、CSS、およびJavaScript:Web開発者に不可欠なツール Apr 09, 2025 am 12:12 AM

    HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。

    See all articles