JavaScriptのbuilt-inメソッドのpreventDefaultを上書きする方法

複数のライブラリを利用してるときに、誰かがpreventDefault()をしているようで、mousedownのデフォルトアクションが実行されない。
preventDefault()を上書きをしてブレークポイントを貼って、スタックトレースでそいつを突き止めたい。

方法1: 単純にprototypeを上書きする

Operaだと下記で成功するが、Firefox3ではうまくいかなかった。

function neko(){
	debugger;
	alert('neko');
}
Event.prototype.preventDefault = neko;

方法2: イベントのpreventDefaultを上書きする

下記のようにすると、Firefoxでも上書きができた。

function neko(){
	debugger;
	alert('neko');
}
// mousedownは取りたいイベントによって変える。
document.addEventListener('mousedown', (function(in_e){ in_e.preventDefault = neko; }), true);

capturingは上から辿られるので、documentでイベントのpreventDefaultを上書きしたら、その後のcapturing, bubbling, targetフェーズでpreventDefaultが呼ばれたときに、上書きした奴が呼ばれる。

厳密にはいろいろ抜けがあるが、実用上はこれで問題なさそう。
もう少し改良して、greasemonkeyにでもするか。