Firefox3 の Greasemonkey, unsafeWindow 内の prototype がとれない
なぜかわからないけど unsafeWindow 中のオブジェクトの prototype がとれないっぽい……
unsafeWindow.Hatena.Haiku.EntryForm.prototype //=> undefinedでもって回避しようとして以下のようなコードを書いてみたけど
function unsafeeval (code) {
var d = new Deferred;
unsafeWindow.___eval = arguments.callee;
arguments.callee.callback = function (r) {
delete unsafeWindow.___eval
d.call(r);
};
unsafeWindow.location.href = "javascript:"+encodeURIComponent("___eval.callback("+code+")");
return d;
}
unsafeeval("Hatena.Haiku.EntryForm.prototype").
next(function (proto) {
alert(proto.showDrawForm); // とれてる
proto.showDrawForm = function () {
alert("aaa"); // 実行されない orz
};
alert(proto.showDrawForm); // かきかえはできてる
});って感じになる。javascript:alert(Hatena.Haiku.EntryForm.prototype.showDrawForm) するとちゃんと設定された関数が表示されるんだけど、実行はされない (もとの関数はもちろんよばれない)。だれかたすけて>< これは Fx のバグ?
prototype 以外への書きかえはもちろんうごく……