フック?
そういえば、すでにある拡張子クラスのイベントハンドラを上書きするスクリプトを書くときなんですけども。単純に上書きだと、同じイベントハンドラを上書きするスクリプトを複数登録したとき最後に登録したスクリプトしか有効にならないので、こんな風にするとよいと思います。
// フック関数の定義
function js_onKeySpace_hook (originalHandler) {
return function (arg, classname, methodname) {
// オリジナルのハンドラの実行前に追加する処理をここに書きます
App.Notice('フックしたよ');
// オリジナルのハンドラを呼ぶ
if (originalHandler)
originalHandler.call(this, arg, classname, methodname);
else
invoke(arg, this.parent, methodname);
// オリジナルのハンドラの実行後に追加する処理をここに書きます
App.Notice('フックしたよ');
}
}
// フックする
class_js.prototype.onKeySpace = js_onKeySpace_hook(class_js.prototype.onKeySpace);
赤い字の部分が、それぞれのスクリプトを書く人が変更する必要のある個所です。特に関数名(サンプル中の 'js_onKeySpace_hook')はフックするそれぞれのスクリプトごと異なる必要があるので、そこだけ気をつけます。
by knife37
| 2004-11-23 21:47
| トリビア
| Top
|