Hatena::Groupjavascript

emergentのJavaScript入門日記

 | 

2008-11-22

GreaseMonkeyでonclickが使えなくてはまった

13:59 | GreaseMonkeyでonclickが使えなくてはまった - emergentのJavaScript入門日記 を含むブックマーク はてなブックマーク - GreaseMonkeyでonclickが使えなくてはまった - emergentのJavaScript入門日記

ボタンを追加して押したらイベント発生させるようなぐりもん書いてて、以下のようなコードを書いてたらエラー吐かれてしばらくハマってた。

var button = document.createElement('input');
button.type = 'button';
button.value = 'hogehoge';
button.onclick = function() { ... };

ちょびっと悩んだあとGoogleさんにお伺い。ありました。

これがダメ。getElementByIdはElement自身ではなくXPCNativeWrapperというラッパを返すため、 上記のようなコードではelementにonclickを設定するコードにはならないというもの。 (idやclassNameのようなプロパティはXPCNativeWrapperがちゃんとラッピングしているElementの値を返すようです)

304 - narucissus is Not Modified: Greasemonkeyで遊ぶ(その1)

要するに、ちゃんとaddEventListener使えということ。

button.addEventListener('click', function() { ... }, false);

としたら、ちゃんと動作するようになりました。

 |