1

Chrome 拡張機能で document.cookie を上書きしようとしていますが、元の document.cookie 機能を同時に動作させるのに苦労しています。現在、私はこれを持っています:

var _cookie = document.cookie; 
document.__defineSetter__("cookie", function(the_cookie) {_cookie=the_cookie;} );
document.__defineGetter__("cookie", function() {return _cookie;} );

hereの手法を使用して、コンテンツ スクリプトから JS を挿入しています。

私が見ている動作は、再定義されたセッターとゲッターが呼び出されることですが、元の関数は機能しなくなりました。たとえば、開発者ツールを使用して _cookie と document.cookie をチェックすると、期待される値は同じであることがわかりますが、Chrome の Cookie ストアには Cookie が表示されません。

元の document.cookie 機能をどのように壊しているのか、誰か教えてもらえますか? document.cookie がプロパティであるため、実際には元のセッターへのポインターを取得していないという問題はありますか?

4

2 に答える 2

3

var _cookie = document.cookie;元のゲッターとセッターを保存するのcookieではなく、ゲッターを呼び出して結果を保存するだけです。

このページ元のリンク、現在は壊れています)には、Cookieセッターとゲッターを保存する方法の例があります。

var cookie_setter = document.__lookupSetter__ ('cookie');
var cookie_getter = document.__lookupGetter__ ('cookie');
于 2012-05-16T10:23:38.327 に答える
1

元の Cookie の getter および setter 関数を再定義したため、新しい関数の元の関数の重要な部分または実装を忘れている可能性があります。

于 2012-04-13T13:47:45.463 に答える