webMathematica でWebページの一部を動的に更新したいのですが.
 webMathematica でWebページの一部だけを動的に更新するためには,いくつかの段階が必要です.MSPファイルに直接アクセスすると,MSPファイルは通常フォームを送り,評価された内容が加わった新しいHTMLコードを作成することにより出力を生成します.新しいHTMLコードの作成は,好ましくないWebページのフリッカーとみなされることがよくあります.ページ全体を更新するのではなくページの一部のみをアップデートしたい(このようにすることでWebページのフリッカーを防ぎたい)場合は,JavaScriptを使ってページを動的にアップデートすることができます.そのためにはMathematica の内容を生成するMSPファイルと,イメージタグの付いた,アップデートされるHTMLファイルの2種類のファイルが必要です. | 1. | まず,希望の画像を生成するMSPを書きます.この方法を使うときは,返される画像は実際のGIF画像であり,キャッシュの画像を参照しているのではないということが重要です.式をDisplayStringでラップしてからMSPReturnを使うと,GIF画像が必ず返されるようにすることができます.下は,プロットの範囲として最小値・最大値の2つの引数が渡されたときに,簡単なプロットを生成するのに使われるMathletの例です. |
| | <%Mathlet MSPReturn[DisplayString[MSPBlock[{$$min, $$max},
MSPShow[Plot[Sin[x], {x, $$min, $$max}], "GIF"], "image/gif"] %> |
| 2. | HTMLファイルには,MSPの出力を受けて,デフォルトのGIF画像をMSPによって返されるGIF画像に置き換えるJavaScript関数を書かなければなりません.次のようなJavaScript関数が使われます. |
| | <script language="JavaScript">
function showPlot()
{
var a, b;
var q;
var m = "URL to the MSP that generates the output";
a = document.forms.sample.min.value;
b = document.forms.sample.max.value;
q = (m + "?min=" + escape(a) + "&max=" + escape(b));
document.images.default.src = q;
return false;
}
</script> |
| 3. | 次にMSPによって返される,動的に生成されたGIF画像のプレースホルダとなるデフォルトの画像が必要です.このデフォルトの画像はMSPが返す画像と同じサイズでなければなりません.下の例では,default.gifというデフォルトの画像がHTMLファイルと同じディレクトリにあると仮定しています. |
| | このHTMLファイル(ここでは)内では,formタグとデフォルトの画像を参照するimageタグが必要になります.以下はその簡単な例です. |
| | <form action="Sample" name="sample" method="post" onSubmit="showPlot();return false;">
Enter the minimum and maximum plot range for the Plot:<br>
<br>
<input type="text" name="min" width=5 value="0">Minimum
<br>
<input type="text" name="max" width=5 value="2 Pi">Maximum
<br>
<br>
<input type="button" name="btnSubmit" value="Plot" onClick="showPlot();">
</form>
<br>
<img src="default.gif" NAME="default" BORDER="0"> |
| | この例はWebブラウザを使ってHTMLファイルをロードするだけで動作します.また,ブラウザでJavaScriptが使えなければなりません. |
Download this FAQ as a Mathematica 5.2 Notebook
Questions or comments? Send email to support@wolfram.com.
| |