2009-12-08 59 views
-1

我的用戶腳本的任務非常簡單 - 通過XHR橋接功能監聽XHR請求,處理收到的數據並將其返回。當然,一切都是透明的。攔截來自GreaseMonkey腳本的AJAX(XHR)請求

我碰到這個答覆How can I intercept XMLHttpRequests from a Greasemonkey script?來到SO - 這提供了以下的代碼片段:

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

代碼工作時,通過螢火推預期。但是,它不會在Greasemonkey腳本中做任何事情。

在進一步的搜索,我碰到另一個回答:how intercept xhr with greasemonkey - 其中提到:

Greasmonkey和3.X的Firefox目前不支持「原型」 - 屬性。請看下面的票信息 http://greasemonkey.devjavu.com/ticket/164

我有兩個基本查詢:

  1. 這是否適用於Fx的v3.5.x以及? (注意:devjavu.com上的門票鏈接不可訪問)
  2. 什麼是簽名(function(){})()用Javascript表示。 (請耐心,我不是高級JS的專家)。
+0

繼托馬斯的回答(至Q#2),這裏是別人的指針: http://www.hunlock.com/blogs/Functional_Javascript#quickIDX5 – Jumper 2009-12-08 17:37:03

回答

0

函數(){}是匿名函數(拉姆達),加入()簡單地執行它的飛行後。
爲大量代碼保留不同(唯一)範圍非常方便。

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

嚴格地說*波長*意味着使用功能一個調用另一個函數的參數,但+1反正:-) – 2009-12-08 13:12:40

+0

Tomasz,感謝您的澄清。 關於第一個問題的任何線索? – Jumper 2009-12-08 17:36:04