jsをクライアント・サーバのどちらで実行するかを指定するもの。
client
クライアント側で実行する、普通のjs。
runatを省略するとこれになる。
DOM使用可能。
both
クライアント側、サーバ側の両方で使うjs。
クライアント側ではjQueryなどのライブラリが使える。
サーバ側ではwindow直下の関数しか使えない(関数以外の型はundefinedにされる模様)。
DOM使用可能。
server
HTMLファイルが呼ばれた時に実行される箇所。
HTMLのonloadのように
ここで定義された変数はグローバル変数として扱う事はできない。
DOM使用可能。
このscriptタグはクライアント側のHTML上では削除された状態になる。
server-proxy
- runat="client"内で使える関数をここに書く。関数の内部はサーバ側で実行される。
これによりajaxが簡単に行える。 - server-proxy内は関数以外のコードを無視する。
namespace代わりに使うオブジェクトも無視されるので注意。 - server-proxyはheadタグの一番下に追加される。runat="client"なscriptタグの下に生成される為、server-proxy内の関数が読み込まれる前に呼び出せない事に注意。
scriptタグ以外
function geso(){}
geso.runat = "server-proxy"
runat="server"内の関数のrunatを書き換えると、そのrunatとして扱われる。
・runat="server"上の関数に「関数名.proxy = true」と指定するとrunat="server-proxy"と同じ扱いになるらしい(未確認)
参考:Aptana Jaxerのアーキテクチャ:“JavaScriptだけ”を可能にする仕組み - builder by ZDNet Japan
*1:gesoはrunat="server"を指定したscriptの関数名