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;} );

我正在使用此处的技术从内容脚本中注入 JS 。

我看到的行为是我重新定义的 setter 和 getter 被调用,但原来的函数不再起作用。例如,我可以使用开发人员工具检查 _cookie 和 document.cookie 并查看它们具有相同的预期值,但 Chrome 的 cookie 存储中从未出现任何 cookie。

谁能告诉我我是如何破坏原始 document.cookie 功能的?document.cookie 是一个属性的问题,所以我实际上并没有得到指向原始设置器的指针吗?

4

2 回答 2

3

var _cookie = document.cookie;不是保存原始的getter和setter cookie,它只是调用getter并保存结果。

页面原始链接,现已损坏)有一个如何保存 cookie setter 和 getter 的示例:

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 回答