htmlやcssを学んでいると
Webページに動きをつけるため
JavaScriptを学び始めたい
と感じたことは無いでしょうか。
今回は、scriptタグの
・基本的な使い方
・HTMLの描画(レンダリング)が終了してからscriptを読み込む方法
について説明します。是非参考にしてみてください。
scriptタグとは
scriptタグの読み方
scriptタグは、スクリプトタグと読みます。JavaScriptのScriptと同じです。
スクリプトは一般的には「脚本」「台本」などと訳されます。プログラム言語などのscriptには、一連の処理手順を記述したものという意味を持ちます。
scriptタグの説明
scriptタグには現在は基本的にはJavaScriptを記述します。
まず、scriptタグにはインラインで直接HTMLに記述する方法と、外部ファイルを読み込む方法があります。
また、scriptタグはheadタグ内にも、bodyタグにも記述することが出来ます。
scriptタグで利用できる属性
scriptタグでは以下の属性を使うことができます。
属性 | 説明 |
---|---|
src | スクリプトを書いたファイルのURLを指定 |
async | srcで指定したスクリプトを非同期でダウンロードして実行 |
defer | srcで実行したスクリプトをHTMLの後で読み込み実行 |
type | スクリプトのMIMEタイプを指定 |
charset | スクリプトの文字エンコーディングを指定 |
対応ブラウザ
対応ブラウザは以下の通りです。
PC用ブラウザ | 対応状況 |
---|---|
Chrome | 完全対応 |
Edge | 完全対応 |
Firefox | 完全対応 |
nternet Explorer | 完全対応 |
Opera | 完全対応 |
Safari | 完全対応 |
スマートフォン用ブラウザ | 対応状況 |
Android webview | 完全対応 |
Android版Chrome | 完全対応 |
Android版Firefox | 完全対応 |
Android 版 Opera | 完全対応 |
iOS版Safari | 完全対応 |
Samsung Internet | 完全対応 |
scriptタグの基本的な使い方
scriptタグで、JavaScriptを記述した外部ファイルを読み込む方法
外部ファイルとして読み込むには下記のように記述します。
1 |
<script src="スクリプトファイルのURL" type="text/javascript"></script> |
一般的なWebサイトでは、JavaScriptは外部ファイルに書いて読み込むことが多いです。
Webサイトを作る場合には、複数のページであることが多いです。その複数のWebページから、同じ内容を流用するために外部ファイルに記述して、すべてのページから参照する方が効率が良いです。
scriptタグでHTMLに直接記述(インラインで記述)する方法
インラインで記述するには、下記のように記述します。
1 2 3 4 5 6 |
<script> //ここに直接スクリプトを記述する alert('アラートダイアログを表示する"); </script> |
これはインラインのCSSと同様に、HTMLに直接インラインで書くことが出来ます。
利点としては、HTMLを読み込む際に外部ファイルを読むことで、処理が少し重くなることを防ぐことが出来ます。
scriptタグが実行されるタイミング
scriptタグは、defer属性とasync属性を指定しない場合には記述した位置でスクリプトが実行されます。
例えば下記のように、scriptタグをHTMLのど真ん中に記述したとします。
その記述で、scriptタグより前に書いたdiv要素を操作するスクリプトを書くと、そのスクリプトは動作します。
しかし、scriptタグより後に書いたdiv要素を操作するスクリプトは動作しません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <span>サンプルです</span> そうですよ <div id="box1">書き変わります</div> <script> //すでに読み込まれたbox1を操作しようとするので動きます。 let box1 = document.getElementById("box1"); box1.innerHTML = "書き換えました"; //こちらは、まだ読み込まれていないbox2を操作しようとするので動きません。 let box2 = document.getElemetById("box2"); box2.innerHTML = "これは書き換えられません"; </script> <div id="box2">書き変わりません</div> <span>よみこまれますか</span> </body> </html> |
HTMLのパース(ブラウザがHTMLを解析)が終了してからscriptを読み込む方法
scriptタグをbodyの閉じタグ直前に記述する方法
一般的にはこの方法がとられています。scriptタグは書かれている位置で実行するので、一番最後に書いておけば問題が起こりません。
1 2 3 4 5 6 7 8 9 10 |
<head> <meta charset="utf-8"> </head> <body> <!-- ここにはHTMLが記述されているとします --> <script type="text/javascript" src="sample.js"></script> </body> |
scriptタグをdefer属性を利用して記述する方法
defer属性をつけてscriptタグを記述すると、HTMLのパースが終わった後に実行します。
これは、上記で説明したbodyタグの閉じタグの直前にscriptタグを書いたのと同じことになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
<head> <meta charset="utf-8"> <!-- defer属性をつけて記述 --> <script defer type="text/javascript" src="sample.js"></script> </head> <body> <!-- ここにはHTMLが記述されているとします --> </body> |
scriptタグを複数定義した場合で、deferタグがすべてについている場合には、HTMLのパースが終わった後に記述順で読み込み・実行が行われます。
まとめ
いかがでしたでしょうか。
チームでWebサイトを制作・開発していくと、scriptの実行されるタイミングで動作しないことなどが稀にあるので覚えておきましょう。
scriptタグを利用してJavaScritが書けるようになると、Webページの表現力が格段に上がります。
この記事が参考になれば幸いです。