ティラノスクリプトの[button][glink]タグで、expパラメータの処理を追加したい!
タイトルだけだと何がなんだかわかんねーな
[button]タグ、[glink]タグにはexpパラメータというものがあります。
リファレンスにあるとおり、ボタンなりグラフィカルリンクなりをクリックしたときに実行されるjavascriptを記述するパラメータです。
このパラメータ自体は、単純に実行したい処理を文字列で記述してやればOKです。
こんなかんじ
code:sample.ks
glink text="リンク" target="*link" exp="console.log('test dayo')"
が、たとえば[glink]をマクロ化した場合など、expパラメータを二重に指定したい場合があったりします。
こんなかんじ
code:sample.ks
macro name="macro_dayo"
glink text="リンク" target="*link" exp="console.log('test dayo')"
;macro_dayoマクロで指定したexpパラメータは console.log('test dayo') で上書きされてしまう
endmacro
macro_dayo x=100 y=100 exp="f.test=true"
イメージとしては、マクロ内で指定しているexpパラメータを共通処理として、個々のマクロで別の処理を追加したいパターンです。
しかし、この書き方だと[macro_dayo]で指定しているexpパラメータの値は、マクロ内の[glink]タグのexpで上書きされてしまい、実行されません。
[macro_dayo]と[glink]、ふたつのexpパラメータを合体させて実行したい!
そんなときはこうします。
code:sample.ks
macro name="macro_dayo"
iscript
;expパラメータに追記
mp.exp = mp.exp + ";console.log('test dayo')"
endscript
glink text="リンク" target="*link" exp="%exp"
endmacro
mp.expは、expパラメータをjavascriptで記述する書き方です。
[iscript]~[endscript]内でやっているのは、expパラメータに指定された個別処理へのマクロ共通処理の追記です。
さらに[glink]のexpパラメータで%expとして指定することで、mp.expの値がそのまま[glink]に渡されます。
さらに言えば、[glink *]でもOKです。
考えてみれば単純な話なんですが、これに気づくのに1日かかったから書いておく
#ティラノスクリプト