Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
jQuery Mobile逆引きリファレンス

jQuery Mobile逆引きリファレンス

jQuery Mobileページでローディング表示をカスタマイズするには?

2014年2月13日

jQuery Mobileで、ページ読み込みに際してローディングアイコンを表示する方法と、ローディング表示を制御する基本的なテクニックを解説。

  • このエントリーをはてなブックマークに追加

jQuery Mobileとは?

 jQuery Mobileは、jQueryを拡張するライブラリ(プラグイン)の一種で、名前のとおり、スマホ/タブレットに代表されるモバイル対応アプリを開発するための機能を提供します。jQuery Mobileの導入方法や使い方、jQuery Mobileが提供する主要機能については、「jQuery Mobile逆引きリファレンス: jQuery Mobileを利用するには?」を参照してください。

 別稿「jQuery Mobileページでハイパーリンクを設置するには?」でも触れたように、jQuery MobileではハイパーリンクはデフォルトでAjax式リンクとなります。そして、Ajax式リンクでは、ページ読み込みに際してローディング表示を表示できます(次の画面)。本稿では、このローディング表示を制御する基本的なテクニックについて解説します。

リンク時にデフォルトで表示されるローディング表示
リンク時にデフォルトで表示されるローディング表示

ローディング表示をカスタマイズする

 jQuery Mobileでは、ローディングメッセージを管理するLoaderウィジェット*1の動作パラメーターをカスタマイズすることで、さまざまなローディングメッセージを表示できます。

  • *1 Loaderウィジェットは、jQuery Mobile 1.2で追加されました。

 例えば以下のコードでは、「loading」というテキストメッセージを伴ったローディング表示にカスタマイズしています。

HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>jQuery Mobile</title>
<link rel="stylesheet"
  href="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css" />
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script>
$(document).on('mobileinit', function() {
  $.mobile.loader.prototype.options.text = 'loading';
  $.mobile.loader.prototype.options.textonly = false;
  $.mobile.loader.prototype.options.textVisible = true;
  $.mobile.loader.prototype.options.theme = 'a';
});
</script>
<script src="http://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js">
</script>
</head>
<body>
<div data-role="page">
  <div data-role="header">
    <h1>jQuery Mobile TIPS</h1>
  </div>
  <div role="main" class="ui-content">
    <a href="linked.php" class="ui-btn">ローディング</a>
  </div>
  <div data-role="footer">
    <h3>Copyright 1998-2014, YAMADA.Yoshihiro</h3>
  </div>
</div>
</body>
</html>
ローディング表示をカスタマイズする例(loading.html)

 Loaderウィジェットで利用できる主なパラメーターは、以下の通りです。これらのパラメーターは、mobileinitイベントリスナーで記述します*2

パラメーター概要デフォルト値
disabled ローディング表示を無効にするか false
text ローディング表示のテキスト loading
textVisible ローディング表示にテキストを表示するか false
textonly テキストだけを表示するか false
theme ローディング表示に適用されるテーマ (親要素を継承)
html ローディング表示に利用するHTML文字列 ''
Loaderウィジェットの主な動作パラメーター
  • *2 mobileinitイベントリスナーはjQuery Mobileの初期化タイミングで呼び出されます。その性質上、「jQueryが読み込まれた後、jQuery Mobileが読み込まれる前」に登録しなければなりません。

 デフォルトでは、ローディングアイコン(Spinner)だけが表示されますので、ローディングテキストを表示するには、明示的にtextVisibleパラメーターを「true」に設定してください。

 以下は、太字部分のパラメーターを変更した場合のローディング表示です。

「theme="b"」の場合
「text=ロード中」、「textVisible=true」の場合
「text="ロード中"」、「textVisible=true」の場合
「text=ロード中」、「textVisible=true」、「textonly=true」の場合
「text="ロード中"」、「textVisible=true」、「textonly=true」の場合

 ローディング表示そのものを無効にしたい場合には、disabledパラメーターを「true」に設定します。

自作のローディング表示を用意する

 htmlパラメーターに任意のHTML文字列を指定することで、独自のローディング表示を実装することもできます(以下のコード)。htmlパラメーターが空文字列(デフォルト)の場合は、標準のローディング表示が利用されます。

JavaScript
$(document).on('mobileinit', function() {
  $.mobile.loader.prototype.options.textVisible = true;
  $.mobile.loader.prototype.options.theme = 'b';
  $.mobile.loader.prototype.options.html = '<img src="http://www.wings.msn.to/image/wings.jpg" width="200" /><h3>loading now...</h3></span>';
});
自作のローディング表示を表示
自作のローディング表示を表示

ローディング表示をプログラムから操作する

 $.mobile.loadingメソッドを利用することで、ローディング表示をJavaScriptコード側から制御することもできます。ボタンクリック時に時間のかかる処理を実行する場合には、Loaderウィジェットを利用することで、エンドユーザーに対して処理中であることを明確にできます。

 例えば次のコードは、「ロード中」というメッセージを伴うローディング表示を表示し、任意の処理を行った後に、そのローディング表示を非表示にしている例です。

JavaScript
$(document).on('click', '.show-loading', function() {
  $.mobile.loading('show', {
    text: 'ロード中',
    textVisible: true,
    textonly: false
  });
  ……任意の処理……
  $.mobile.loading('hide');
});
……中略……
<button class="show-loading">処理開始</a>
JavaScriptコード側からローディング表示を制御する例(loading2.html)
ボタンクリック時にローディング表示
ボタンクリック時にローディング表示

 ローディングを表示状態にするには、loadingメソッドに対してshowキーワードを渡します。第2引数には、先ほど触れたような動作パラメーターを指定することもできます。非表示にするには、hideキーワードを渡すだけです。

リンクエラーのメッセージを表示する

 Loaderウィジェットではありませんが、「ページ移動時の表示」という意味で、併せて紹介しておきます。リンクエラー時のメッセージをカスタマイズするには、以下のようにします。

JavaScript
$(document).on('mobileinit', function() {
  $.mobile.pageLoadErrorMessage = "ページが表示できません";
  $.mobile.pageLoadErrorMessageTheme = "b";
});
リンクエラー時のメッセージを指定(error.html)
エラーメッセージを表示
エラーメッセージを表示

 pageLoadErrorMessageパラメーターは表示する文字列を、pageLoadErrorMessageThemeパラメーターはエラー表示に適用するテーマを、それぞれ表します。

※以下では、本稿の前後を合わせて5回分(第4回~第8回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

jQuery Mobile逆引きリファレンス
4. jQuery Mobileページでヘッダー/フッターの表示をカスタマイズするには?

ヘッダー/フッターを作成する方法を解説。また、ヘッダー/フッターの位置を固定したり、タップで非表示にしたりする方法なども紹介。

jQuery Mobile逆引きリファレンス
5. jQuery Mobileページでハイパーリンクを設置するには?

jQuery Mobileにおけるリンクの挙動を解説。また、ページ遷移時のエフェクトやプリフェッチ機能についても説明する。

jQuery Mobile逆引きリファレンス
6. 【現在、表示中】≫ jQuery Mobileページでローディング表示をカスタマイズするには?

jQuery Mobileで、ページ読み込みに際してローディングアイコンを表示する方法と、ローディング表示を制御する基本的なテクニックを解説。

jQuery Mobile逆引きリファレンス
7. jQuery Mobileページにボタンを配置するには?

jQuery Mobileページでボタンを設置するには、<button>/<a>/<input>要素などを利用するのが一般的。これらを使ってさまざまなレイアウトを実現する方法を説明。

jQuery Mobile逆引きリファレンス
8. jQuery Mobileページでアイコン付きのボタンを配置するには?

jQuery Mobileページでボタンを設置する方法について説明。今回は、アイコン付きのボタンをレイアウトする方法を解説する。

サイトからのお知らせ

Twitterでつぶやこう!