この文書では、SurfIt! デモ ブラウザ用の Guile アプレット作成のための仕 様を説明する。
application/guile
で示される。これは、ファイル拡張子
.scm
に対するデフォルトのタイプである。
アプレットは HTML 文書の中でインライン実行できる。
<a href="applet.scm" rel=embed>
fallback_html
</a>
applet.scm
がロードされ、ページに挿入され、最
初にこのタグを含む文書がロードされた時点で実行される。
Guile アプレットをサポートしないブラウザでは、
fallback_html
が表示される。
ハイパーリンクをたどることでもアプレットを起動できる。
<a href="applet.scm"
fallback_html
</a>
applet.scm
がロー
ドされて実行される。アプレットから明示的に要求する場合に限り、元の文書
がクリアされる。
Guile アプレットをサポートしないブラウザでは、
fallback_html
が表示される。
アプレットは必ずアプレット ライブラリを含む必要がある。
(require 'applet)
アプレットは必ず、ブラウザがそのアプレットの実行を終了する時にブラウザ によって呼び出されるルーチンを定義する必要がある。
(define-applet-terminate routine)
routine
は、アプレットの実行終了が要求された時にブラウザ
が起動するルーチンの名前である。アプレットが表示された状態である場合、
このルーチンはそのアプレットを表示している Tk キャンバスを削除(destroy)して
から終了する必要がある。
アプレットは、(ページ上に表示されることで外部的に、またはScheme 環境 中で内部的に)アクセス可能である限り存在し続きる。
アプレットは通常の Guile Scheme プログラムおよび gtcl/gtk Guile 拡張の すべての機能を使用できる。gtk の機能を使って、Guile アプレットは親文書 の中で自分自身を対話的に表示することができる。
注意: Guile は名前空間の制御を提供しており、またアプレットが実行可能な 安全(secure)な環境を提供するためにはこれが必要だが、Guile のデモ ブラ ウザである SurfIt! についてはこれは実装されていない。Guile のデモ ブラ ウザである SurfIt! の主目的は研究用プロトタイプであって、製品レベルの web ブラウザではない。
browser-window-name
(browser-window args)
browser-window-name
はブラウザ ウィンドウである Tk ウィン
ドウ名を含む文字列である。 browser-window
は、ウィンドウ
コマンドの送信先のTcl プロシージャ(proc)に対応する。
applet-window-name
(applet-window args)
applet-window-name
はアプレットのコンテナとして使用できる
フレームのTk ウィンドウ名を含む文字列である。
applet-window
ウィンドウ コマンドの送信先のTcl プロシージャ
(proc)に対応する。アプレットを表示可能にする場合、このフレームをブラウ
ザウィンドウに挿入しなければならない。
applet-embedindex
applet-embedindex
はアプレットのアンカーのブラウザ ウィン
ドウ中のオフセットを含む文字列である。通常これを用いるのは、ブラウザ
ウィンドウ中の元の HTML と同じ位置にアプレットを挿入する場合である。
(browser-window 'window 'create applet-embedindex
:window applet-window-name)
.
(applet-newpage)
(applet-parsehtml html)
html
で指定される HTML を解析し、その結
果をブラウザ ウィンドウの末尾に表示する。
(applet-loadurl url)
url
で指定され、HTTP の GET リクエストで
取得されるオブジェクトの内容の、アプレット ウィンドウ中へのロードと
レンダリングを開始する。
このルーチンは (applet-loaddata url applet-parsehtml)
と
同じである。
(applet-loaddata url callback)
url
で
指定されるオブジェクトの内容のロードを開始し、ただちに戻りを行う。
後にオブジェクトがすべてロードされた時点で、要求されたオブジェクトの
データを含む文字列result
を伴って
(callback result) が非同期的に呼び出される。
-
(applet-posturl url datavar postdata)
-
このルーチンは、HTTP の POST リクエストを用いて
postdata
を URL url
にポストした結果のアプレット ウィンドウ中への
ロードとレンダリングを開始する。datavar
は、途中経過を
蓄積しておくための Tcl のグローバル変数の名前として使用する文字列である。
postdata
は、((name1, value1), (name2, value2),
...)
なる形式の連想リストでなければならない。この連想リストは、
フィールド名を表すエンコードされていない文字列から、
そのフィールド名に対応するデータの値を表すエンコードされていない文字列
へのマッピングである。このルーチンは、
(applet-postdata url datavar postdata applet-parsehtml)
と
同じである。
-
(applet-postdata url datavar callback postdata)
-
このルーチンは、HTTP の POST リクエストを用いて
postdata
の URL url
へのポストを開始し、ただちに戻りを行う。
後に、結果の戻り値が完全にロードされた時点で、結果のデータを含む文字列
result
を伴って (callback result) が非同期的
に呼び出される。datavar
は、途中経過を蓄積しておくための
Tcl のグローバル変数の名前として使用する文字列である。
postdata
は、((name1, value1), (name2, value2),
...)
なる形式の連想リストでなければならない。この連想リストは、
フィールド名を表すエンコードされていない文字列から、そのフィールド名に
対応するデータの値を表すエンコードされていない文字列へのマッピングである。