ブラウザの環境概要
6904 ワード
JavaScriptコードをウェブページに埋め込む方法
スクリプトタグ:コード埋め込みページ text/javascript:標準値 appication/javascript:比較的新しいブラウザに対して、この値を設定することを提案します.
仕事の原理
defer属性
async属性
使用プロトコルをロード
ブラウザのデフォルト
ブラウザの核心にレンダリングエンジンとJavaScriptエンジンがあります.
レンダリングエンジン
このエンジンの主な役割は、ウェブページのコードをユーザーの視覚で感知できるドキュメントの異なるブラウザにレンダリングエンジンがあることです. これらはウェブページを処理する時、通常四つの段階があります.解析コード: オブジェクト合成: レイアウト:レンダリングツリーのレイアウトを計算する( 描画:レンダリングツリーをスクリーン に描画する.
上の4ステップの実行順序は厳密には順番に実行されません.
流れと描き直し
レンダリングツリーがウェブページのレイアウトに変換され、「レイアウトフロー」と呼ばれる.レイアウトがページに表示されているこのプロセスを「描画」といい、この段階を「再描画」といいます.したがって、再ストリームは必ず再描画を引き起こします.しかし、再描画は必ずしも再ストリームを引き起こすとは限りません.
JavaScriptエンジン
スクリプトタグ:コード埋め込みページ
<script>
console.log('Hello World');
script>
このラベルのtype
属性はスクリプトタイプを指定するために使用されますが、script
はJavaScript
コードを参照しているので、書かなくてもいいです.type
属性は2つの値があります.type
属性の値が上記の2つでない場合、ブラウザはscript
のコードを実行しない.<script id="mydata" type="x-custom-data">
console.log('Hello World'); //
script>
text
属性を使って内容を読み取ることができます.document.getElementById('mydata').text
// "
// console.log('Hello World');
// "
スクリプトラベル:外部スクリプトを読み込みます.script
タグは、Src属性によって外部のスクリプトをロードする.スクリプトファイルに英語以外の文字がある場合は、charset属性で符号化を明記する必要がある.<script charset="utf-8" src="example.js">script>
外部スクリプトをロードする方法とコードブロックを直接追加する方法は混用できません.そうでないと、直接追加されたコードブロックは無視されます.<script src="example.js">
console.log('Hello World!'); //console.log
script>
script
タグを使用することができるintegrity
属性は、ロードするスクリプトの一貫性を検証し、属性値は外部スクリプトのHash
タグ名である.<script src="/assets/application.js"
integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs=">
script>
イベントのプロパティを使うhtml
要素のいくつかのイベント属性によって追加することができます.<div onclick="alert('Hello')">div>
URLプロトコルでonclick
タグについては、a
プロトコルを使用することができる.<a href="javascript:alert('Hello')">a>
javascript:
タグをクリックして、後のa
関数を実行します.alert
が返した文字列があれば、新しい文書を作成して文字列の内容を示します.//javascript:
<a href="javascript:new Date().toLocaleTimeString();">
What time is it
a>
スクリプトラベル仕事の原理
javascript:
タグは通常script
タグ内の末尾に置かれ、body
タグを実行するとscript
タグが生成されたことを保証します.複数のDOM
タグは同時にダウンロードされますが、実行するときは順次に実行されます.defer属性
script
タグにscript
属性のスクリプトのダウンロードを防ぐために、内蔵defer
コードおよび動的に生成されたdefer
タグに対してブロックページレンダリングJavaScript
属性を追加することができます.script
属性を使用すると、ロードされたスクリプトにdefer
を使用してはいけません.async属性
document.write
属性は、ブロック効果を解決することもできます.この属性があるasync
タグは、ダウンロード時にレンダリングをブロックしません.この属性を使用してスクリプトの実行順序を保証できません.script
属性のスクリプトがあります.async
メソッドを使用するべきではないです.一般的に、スクリプト間の依存関係がなければ、document.write
属性を使用します.スクリプト間の依存関係がある場合は、async
属性が使用される.defer
およびasync
属性を同時に使用しても、defer
属性が機能しない場合、ブラウザ挙動はdefer
属性によって決定される.使用プロトコルをロード
ブラウザのデフォルト
async
プロトコルを使用して、ダウンロードプロトコルを指定できます.<script src="https://example.js">script> // https ( )
<script src="//example.js">script> //
ブラウザの構成ブラウザの核心にレンダリングエンジンとJavaScriptエンジンがあります.
レンダリングエンジン
このエンジンの主な役割は、ウェブページのコードをユーザーの視覚で感知できるドキュメントの異なるブラウザにレンダリングエンジンがあることです.
http
:Firefox
エンジンGecko
:Safari
エンジンWebKit
:Chrome
エンジンBlink
:IE
エンジンTrident
:Edge
エンジンEdgeHTML
コード解析HTML
、DOM
コード解析CSS
(CSSOM
)CSS Object Model
およびDOM
をレンダリングツリー(CSSOM
)に合成するrender tree
)上の4ステップの実行順序は厳密には順番に実行されません.
流れと描き直し
レンダリングツリーがウェブページのレイアウトに変換され、「レイアウトフロー」と呼ばれる.レイアウトがページに表示されているこのプロセスを「描画」といい、この段階を「再描画」といいます.したがって、再ストリームは必ず再描画を引き起こします.しかし、再描画は必ずしも再ストリームを引き起こすとは限りません.
JavaScriptエンジン
layout
エンジンは、ウェブページのJavaScript
コードを処理するためのものです.JavaScript
は解釈型言語です.実行速度を上げるために、ブラウザはJavaScript
をある程度コンパイルして、実行速度を上げるための中間コードを生成します.また、仮想マシンをJavaScript
エンジンにもなります.