jQueryを使っているなら、$.getScriptだけでも覚えましょう。
$.getScriptだけで、外部jsの読み込みには対応できます。
本記事の内容
- $.getScriptとは?
- $.getScriptの動作確認
それでは、上記に沿って解説していきます。
$.getScriptとは?
$.getScriptは、jQueryで用意されている関数です。
GET でサーバーからJavaScriptファイルを読み込み、実行します。
$.getScriptを使えば、外部jsファイルを動的に読み込むことが可能です。
同じようなことを実現するために、<script>タグをDOMに追加する方法があります。
でも、jQueryを使っているなら、$.getScriptを使いましょう。
jQueryベースのコードの中に、次のようなコードが現れるのは残念です。
document.body.appendChild
可読性も下がりますからね。
何のためのjQueryなんだということです。
では、$.getScriptの仕様を確認していきます。
以下コードが、すべてです。
jQuery.getScript( url [, success ] )
最も簡単な使い方は、次のようになります。
$.getScript("外部jsのパス");
これに加えて、次の3つは理解しておきましょう。
- コールバック関数
- エラー処理
- キャッシュ対応
それぞれを以下で説明していきます。
コールバック関数
成功時に呼ばれる関数を設定できます。
$.getScript( "ajax/test.js", function( data, textStatus, jqxhr ) { console.log( data ); // Data returned console.log( textStatus ); // Success console.log( jqxhr.status ); // 200 console.log( "Load was performed." ); });
エラー処理
ちゃんとエラー処理をする場合は、次のように記述できます。
$.getScript( "ajax/test.js" ) .done(function( script, textStatus ) { console.log( textStatus ); }) .fail(function( jqxhr, settings, exception ) { $( "div.log" ).text( "Triggered ajaxError handler." ); });
キャッシュ対応
デフォルトでは、$.getScript()はキャッシュの設定をfalseにします。
タイムスタンプ付きのクエリパラメータが、リクエストURLに追加されます。
動的にjsを読み込む以上、デフォルトはキャッシュ無効で問題ありません。
しかし、それではパフォーマンス的に困るというケースも出てくるでしょう。
そのような場合には、キャッシュを有効にできます。
キャッシュを有効にするには、次のコードを追加。
$.ajaxSetup({ cache: true });
以上より、$.getScriptについては理解できたはずです。
次は、実際に利用してみましょう。
$.getScriptの動作確認
まずは、読み込むためのjsファイルを作成します。
一つの関数を記述しているだけです。
change.js
function change_color(color){ $("body").css("background", color); }
次に、change.jsを読み込むページ(test.html)を用意します。
jsも同じhtmlに記述しています。
test.html
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>$.getScript</title> <style type="text/css"> <!-- --> </style> <script src="//code.jquery.com/jquery-latest.js"></script> <script> $(function(){ $.getScript( "change.js" ).done(function(script, textStatus) { // 成功時の処理 change_color("#CCCCCC"); }).fail(function(jqxhr, settings, exception) { // エラー時の処理 console.log(jqxhr); console.log(settings); $("#message").text("読み込みエラー"); }); }); </script> </head> <body> <div id="message"></div> </body> </html>
上記のデモは、こちら。
外部jsの読み込みが、成功しているケースです。
そのため、bodyが「#CCCCCC」で設定されています。
読み込みを失敗させるには、「change.js」を「chnage2.js」にすればいいだけです。
そうすれば、次のような画面とコンソールが表示されます。
以上、$.getScriptの動作確認を説明しました。