无法拦截GreaseMonkey脚本的AJAX(XHR)请求

时间:2009-12-08 12:44:34

标签: javascript ajax greasemonkey xmlhttprequest

我的用户脚本的任务非常简单 - 通过XHR桥接功能监听XHR请求,操纵收到的数据并将其返回。当然,一切都在透明地发生。

我在SO上发现了这个回复How can I intercept XMLHttpRequests from a Greasemonkey script? - 提供了以下代码段:

(function(open) {  
    XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {  
        this.addEventListener("readystatechange", function() {  
            console.log(this.readyState);  
        }, false);  
        open.call(this, method, url, async, user, pass);
    };  
})(XMLHttpRequest.prototype.open);

通过FireBug推送时,代码按预期工作。但是,它不会在Greasemonkey脚本中执行任何操作。

在进一步搜索时,我发现另一个回复:how intercept xhr with greasemonkey - 提到:

Greasmonkey和Firefox 3.x目前不支持“原型”属性。有关更多信息,请参阅以下票证: http://greasemonkey.devjavu.com/ticket/164

我有两个基本查询:

  1. 这是否也适用于Fx v3.5.x? (注意:无法访问devjavu.com上的票证链接)
  2. 签名(function(){})()在Javascript中的含义是什么。 (请承担,不是高级JS的专家)。

1 个答案:

答案 0 :(得分:0)

function(){} 是匿名函数(lambda),只需在运行中执行即可添加()
为代码块保留不同(唯一)的范围非常方便。

(function(){
  var localVariable = 'temp';
})();
console.log(localVariable); // outputs undefined