◆英語版原文のURL◆ http://www.math.union.edu/~dpvc/jsMath/users/global.html
jsMathのグローバルモード

jsMathの弱点の1つはその速度です(または,速度の欠如です).jsMathは各々の数式を解釈してそれを活字組みしなければならないので,これは時間のかかる処理です.パーフォーマンスを改善するために,jsMathはあなたが見ている表現の活字に組んだバージョンを保存する方程式キャッシュを含んでおり,同じ表現が再び現れるならばそのキャッシュを使います.これは幾分役に立つが,そのページで1度ならず正確に同じ表現が起こったときだけです(いくつかの公式が共通項目を含むときに有効な下位表現キャッシュもあります).

JavScriptの働き方によって,新しいページに進むときはいつでも方程式のキャッシュはクリアされるので,そのページで起こった活字組みは次のページのキャッシュに引き継がれません.(一般に,各ページは独自の環境を持っており,セキュリティの理由で,1つのページは他のページに相互作用しません.)このことは,ページからページへと移動すると,キャッシュを持つことの利点の多くが失われることを意味します.

この問題を解消するため,jsMathには「グローバルモード」があります.これは,方程式のキャッシュを保存できるメインフレームを含むフレームセットとjsMath文書が表示される内部フレームを使います.その文書から新しい文書へリンクするとき,内部フレームの内容だけが新しくなり,外側のフレームは変化せずに残ります.jsMathは外側のフレームにキャッシュを保存しているので,そのことは,ページからページへと移動してもキャッシュは元のまま残ることを意味します.このようにして,多くのページを見ると,jsMathのパフォーマンスは,よくなるはずです.

グラーバルモードを始めるには,jsMathコントロールパネルを開き(ページの右下コーナーに常にあるjsMathボタンを使います),「グローバルに移行」ボタンを押します.(いくつかのページは,自動的にグローバルモードを始めるので,もし「ローカルに移行」ボタンが見えれば,すでにグローバルモードにあります.)ページは再読込しなければなりませんが,jsMathボタンが今度はその代わりに「jsMathグローバル」となること以外はたぶん見かけの変化はありません.グローバルモードにおいては,ページからページへ移動すると,方程式のキャッシュは保存されます.

あなたが単独のページを見ているように見えても,グロバルモードはHTMLのフレームセットを使用していることを理解していることは重要です.フレームセットの使用は,フレームを使用するページに伴う通常の複雑さをもたらす.特に,ページの印刷や更新はデリケードなものとなり,アドレスバーとウィンドウの表題は内側のフレームにあるページでなく,外側のフレームの場所と表題を示す.グローバルモードにあるときにマエインページを再読込したら,フレームセットが再初期化され,グローバルな方程式キャッシュは失われる.さらに悪いことに,幾つかのブラウザでは,グラーバルモードを最初に始めたページに戻る.あなたが使用しているブラウザに従ってメインページを印刷することは期待した結果を生まないかもしれない.いくつかのブラウザは,ドキュメント全体ではなく,実際に画面に見えている内側のフレーム部分だけを印刷し,スクロールバーやウィンドウの装飾を含めるかもしれない.

JsMathは,いくつかの方法で問題を軽減しようとしています.まず,jsMathのコントロールパネルは「印刷」および「再読込」ボタンを含んでおり,内部フレームの内容を簡単に印刷したり再読込したりできる.幾つかのブラウザは個々のフレームを印刷したり再読込できるように文脈上のメニュー項目を提供していますが,全部のブラウザではなく,jsMathはその選択肢を提供します.次に,フレームがなかったときと影響が同じになるように,jsMathはウインドウの表題を内部ドキュメントの表題に設定します.


主な困難は,jsMathが内部ページの場所eo示すアドレス域を設定できないことです(それがフレームセットの代わりに新しいページを開いたときから).その代わりに,jsMthのグローバルモードは,実際のページの場所が表示され(そして,変化する)るオプションのグローバル・コントロール・バーを提供する.このバーはデフォルトでは示されませんが,「jsMathのグローバル」ボタンの中の「グローバル」という用語をクリックするか,メインjsMathコントロール・パネルの「コントロール」ボタンをクリックすることにより,これを有効にできる.これらいずれでも,アドレス領域と幾つかの動作ボタンを含む小さなパネルがページ上端に開かれるはずです.

アドレス域は,内部フレームに示されるドキュメントのアドレスを示すので,どんなページが表示されているか,より簡単に分かります.このアドレスを編集することもでき,RETURN(または,「Go」ボタン)を押すことにより,新しいページを見ることができます.ブラウザのメインアドレスバーがアドレスを自動で表示するとしても,このアドレスバーは自動では埋まらないことに注意してください.

他のボタンは以下のものを含みます:

  • 印刷:内部フレームに見えているドキュメントを印刷します.このボタンは内部フレームの内容を印刷するだけであるのに対して,ブラウザのメイン印刷ボタン(またはメニュー項目)は,あなたには必要ないかもしれないフレームセット全体を印刷します.
  • 再読込:これは方程式キャッシュをクリアすることなく,内部フレームに見えているドキュメントを再読込します.ブラウザのメイン再読込ボタン(またはメニュー項目)は,方程式のキャッシュを含めてフレームセットを再初期化し,最初にグローバルモードを始めたページに行かせるかもしれません.このボタンは,これら両方の問題を回避します.
  • ローカルに移行:このボタンはGlobal Modeをやめて,グローバルな方程式キャッシュなしでjsMathを使う方に戻します.同じ働きをする「ローカルに移行」ボタンがjsMathコントロールパネルにもあります.
  • 空にする:グローバルな方程式キャッシュを空にします.まれな状況では,1つのページから貯えられた方程式キャッシュが同じ数式を使用する別のページに対して正しくないかもしれません.その場合,キャッシュをクリアしてページを再読込できます.
  • 隠す:これはグローバル・コントロール・バーを隠します.これは,画面を節約し,グローバルモードでないときと同じようにページが見えるようにします.jsMathボタン注のグローバルという用語の上でクリックするか,または,jsMathコントロール・パネルのコントロールボタンを用いて,グローバルコントロールバーを再開することができます.
jsMathがフレームセットを使用する問題を解決しようとする一方で,解決はその欠点なしではありえません.1つの主な制限は,外のフレームが内部のフレームで文書と通信するためには,両方とも同じサーバー(これは,JavaScriptセキュリティ・モデルの一部です)から来なければならないということです.あなたが同じサーバーからでないページに誘導するならば,ページは表示されますが,jsMathはタイトルまたはアドレスを調べることができず,グローバル・コントろール・バーでこれらを示すことができません.さらに,「印刷」と「再読込」ボタンはそれらのページに利用できないので,ブラウザーの文脈上のメニュー項目に頼らなければなりません.

内部フレームのリンク が,リンクされたページを内部リンクではなくメインページとして開ける原因となることはあり得ます.これは,グローバルフレームを迷子にし,jsMathは事実上ローカルモードに戻ります.jsMathのオプションパネルの設定に従って,jsMathを使用している次のページは自動的にグローバルモードを始めるかもしれませんが,それは正しいことではないのかもしれません.jsMathは,そのページの内容がどのページへリンクしているかを制御できないので,これを防ぐためにできることはほどんどありません.

jsMathのページを見ていて,サイト外の他の場所へ誘導したら,jsMathのグローバル・フレームは存在し続けようとします(考え方として,一時的にサイト外に誘導し,jsMathのページに戻ったら,グローバルな方程式キャッシュがあまだ利用できるので,明示的に要求するまでフレームは取り除かない).jsMathの外側のフレームが見えなくても,それはそこにあり,jsMathボタンが見えない限り分るのは難しいかもしれません.アドレスバーはjsMath-global.htmlファイルのある場所を示しており,新しいページに移動しても変化しないというのが1つの目安です.jsMathのコントロールパネルやグローバル・コントロール・パネルが利用できないときに,グローバルモードを抜け出たくなったとき,これを行う唯一の方法は,jsMathのゴローバルファイルを置き換えるためにアドレスバーに新しいアドレスを入力することです.これにより新しいページに移動でき,jsMathグローバルフレームが取り除かれます.

最後に,あなたはグローバルモードに行くことが現在のページが再読込される原因になっていることに気づいているはずです.ページがフォームの送信によって生成されるときは,このことは,フォームが2度送信される原因ともなります.ほとんどのブラウザはこれに警告し,データを再送信してよいかどうか尋ねますが,そべてのブラウザがそのようにするわけではありません.また,グローバル・コントロール・バーを隠したり消したりすることが,いくつかのブラウザで再読込の原因となることに注意してください.