2008-07-08

Jaxer ClientFramework と Callback のレンダリングを無効にする方法

Aptana Jaxer で runat="server" の ServerFramework だけを使って、runat="server-proxy" や ClientFramework を使わないという選択をしたいときがあります。例えば、モバイル機器など JavaScript をサポートしない WEB ブラウザのときは、Jaxer をサーバサイドで使うがクライアントサイドでは使わないといったケースです。

Jaxer は HTML をレスポンスするとき、自動的に script 要素を追加します。その不要な script 要素を取り除きたいですし、場合によっては、その script 要素が不都合を招くことがあります。が、次のとおり、サーバサイドで手続きすれば、その script 要素の追加を無効にできます。

Jaxer は、ClientFramework をロードするために、次の script 要素を追加しますが、

<script src="/jaxer/framework/clientFramework_compressed.js?version=0.9.7.2472"></script>

次のサーバサイドのコードで、その script 要素の追加を無効にできます。

Jaxer.response.setClientFramework();

Jaxer は、サーバサイドの状態をクライアントサイドに受け渡すとき、次の script 要素を追加しますが、

<script>Jaxer.clientData = Jaxer.Serialization.fromJSONString('{\"foo\":\"bar\"}');</script>

次のサーバサイドのコードで、その script 要素の追加を無効にできます。

Jaxer.clientData = null;

Jaxer は、runat="server-proxy" でコールバック関数を定義したとき、次の script 要素を追加しますが、

<script>Jaxer.Callback.pageSignature = -220624558; Jaxer.Callback.pageName = 'localhost:8081/aptana/golazo/database.html'; Jaxer.CALLBACK_URI = '/jaxer-server/callback'; Jaxer.ALERT_CALLBACK_ERRORS = true;</script>
<script>
function foo() {return Jaxer.remote("foo", arguments);}
function fooAsync(callback) {return Jaxer.remote("foo", arguments, callback);}
</script>

次のサーバサイドのコードで、その script 要素の追加を無効にできます。

Jaxer.proxies = null;

Jaxer.clientData と Jaxer.proxies を明示的に指定する必要性はないと捉えると思いますが、JavaScript ファイルをインクルードしたとき、その中で Jaxer.clientData を扱っていたり、Function.proxy="true" としていることもありえます。そのときも含めて、すべての script 要素を無効にできます。

0 件のコメント: