プロが教えるわが家の防犯対策術!

子画面に別機能をロードするようなページを作成しており、その子画面がオンロードで登録したイベントリスナーをクローズの際に削除するような仕組みにしています。

この処理を行う際、登録済みのリスナー情報を取得できる方法があれば知りたいのですが、方法がわかりません。

(無ければ無いで、管理マネージャーのような仕組みを作成しようと思っています。)

よろしくお願いします。

A 回答 (2件)

# No.1 は質問内容を誤読してました。



eventTarget.onclick = function() { .. } のようにレガシーな書き方をしている場合は No.1 のように String 変換すれば内容を取得&編集可能です。

addEventListener/attachEvent した場合はオーサからリスナー登録状況を見ることはできませんので、管理マネージャを自作して下さい。

# たとえば prototype.js では Event.observers にイベントリスナをキャッシュしています。

参考URL:http://prototype.conio.net/
    • good
    • 0
この回答へのお礼

Chaireさん、回答ありがとうございます。

addEventListener/attachEventでの登録を行っていますので、管理マネージャらしきものを作成しようと奮闘しているところです。

prototype.jsのソースも見てみましたが、ちょっと現状で自分には難解です(^^;

ただ、リスナー登録と同時に登録情報を保存するという考え方は一緒のようなので、拙いながらも現状作成しているものでやってみようと思います。

お礼日時:2006/04/19 11:14

追加


eventTarget.addEventListener('click', listener, false); // W3C standard
eventTarget.attachEvent('onclick', listener); // IE

削除
eventTarget.removeEventListener('click', listener, false); // W3C standard
eventTarget.detachEvent('onclick', listener); // IE

# 現在 DOM2-Events を実装しているメジャーブラウザは Gecko 系,khtml 系,Opera 等。

もし eventTarget.onclick = function() { .. } のようなレガシーな書き方をしているなら

// onclick の中から listener(..); の記述を取り除く
eval("eventTarget.onclick = " + eventTarget.onclick.toString().replace(/listener\s*\([^)]*\)[;\s\n]*/, ''));

# なお prototype.js でも IE メモリリーク対策で unload 時にリスナ破棄しているので参考にして下さい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!