1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 21815 -->
4 <sect3 id="zend.progressbar.adapter.jspush">
5 <title>Zend_ProgressBar_Adapter_JsPush</title>
7 <classname>Zend_ProgressBar_Adapter_JsPush</classname> は、
8 ブラウザ内のプログレスバーを Javascript の Push で更新するアダプタです。
9 つまり、実行中のプロセスの情報を取得するために改めて接続を行う必要がなく、
10 そのプロセス自身が状況を直接ブラウザに送信するということです。
13 アダプタのオプションを設定するには、<code>set*</code>
14 メソッドを使用するか、あるいはコンストラクタの最初のパラメータで
15 配列か <classname>Zend_Config</classname> インスタンスを渡します。
21 <code>updateMethodName</code>:
22 毎回の更新時にコールされる javascript のメソッド。
23 デフォルト値は <classname>Zend_ProgressBar_Update</classname> です。
28 <code>finishMethodName</code>:
29 状態を設定した後にコールされる javascript のメソッド。
30 デフォルト値は <constant>NULL</constant> で、この場合は何も行われません。
35 このアダプタの使い方はきわめて単純です。まず、ブラウザ上にプログレスバーを作成します。
36 これは JavaScript を用いたものでもかまいませんしプレーンな
37 HTML によるものでもかまいません。それから、更新時のメソッドと
38 終了時のメソッド (オプション) を JavaScript で定義します。
39 これらのメソッドは、どちらも唯一の引数として json オブジェクトを受け取るようにします。
41 <code>iframe</code> タグあるいは <code>object</code>
43 更新が行われるたびにアダプタのメソッドがコールされます。
44 引数として渡される json オブジェクトには次のパラメータが含まれています。
49 <code>current</code>: 現在の値。
54 <code>max</code>: 最大値。
59 <code>percent</code>: 算出したパーセンテージ。
64 <code>timeTaken</code>: これまでの経過時間。
69 <code>timeRemaining</code>: プロセスが終了するまでの予想残り時間。
74 <code>text</code>: オプションのメッセージ (指定した場合のみ)。
78 <example id="zend.progressbar-adapter.jspush.example">
79 <title>クライアント側の基本例</title>
81 この例では、JsPush アダプタ用の HTML および <acronym>CSS</acronym>、JavaScript
84 <programlisting language="html"><![CDATA[
85 <div id="zend-progressbar-container">
86 <div id="zend-progressbar-done"></div>
89 <iframe src="long-running-process.php" id="long-running-process"></iframe>
91 <programlisting language="css"><![CDATA[
92 #long-running-process {
101 #zend-progressbar-container {
105 border: 1px solid #000000;
106 background-color: #ffffff;
109 #zend-progressbar-done {
113 background-color: #000000;
116 <programlisting language="javascript"><![CDATA[
117 function Zend_ProgressBar_Update(data)
119 document.getElementById('zend-progressbar-done').style.width = data.percent + '%';
124 これは、黒の枠線と進捗状況表示用ブロックからなるシンプルなコンテナを作成します。
125 <code>iframe</code> や <code>object</code> を <code>display: none;</code>
126 で隠してしまってはいけません。Safari 2 などでは、
127 そうすると実際のコンテンツを読み込まなくなってしまします。
130 プログレスバーを自作するのではなく、Dojo や jQuery
131 などの既存の JavaScript ライブラリのものを利用したいこともあるでしょう。
136 <para>Dojo: <ulink url="http://dojotoolkit.org/reference-guide/dijit/ProgressBar.html" /></para>
139 <para>jQuery: <ulink url="http://t.wits.sg/2008/06/20/jquery-progress-bar-11/" /></para>
142 <para>MooTools: <ulink url="http://davidwalsh.name/dw-content/progress-bar.php" /></para>
145 <para>Prototype: <ulink url="http://livepipe.net/control/progressbar" /></para>
152 あまり頻繁に更新しすぎないようにしましょう。
153 毎回の更新は、少なくとも 1kb の大きさとなるからです。
154 これは、Safari が実際にレンダリングを行って関数をコールするのに必要なサイズです。
155 Internet Explorer の場合はこれは 256 バイトとなります。