2011-04-11 52 views
2

我構建了一個Firefox擴展,並且希望爲加載的每個頁面更改XMLHTTPRequest對象的行爲。重新定義Mozilla Firefox中的overlay.js中的XMLHTTPRequest附加組件

我發現下面的代碼應該做的伎倆:

appcontent.addEventListener("load", function(event){ 
     var original_xhr = XMLHttpRequest; 
     XMLHttpRequest = function() { 
      original_xhr(); 
      alert ("I redefined this function"); 
     } 
     alert ("Page loading"); 
    } , true) 

我有這樣一段代碼添加到我的overlay.js中的文件。加載事件正常工作,因爲顯示「頁面加載」警報。但是XMLHTTPRequest不會被覆蓋。

有誰知道錯在哪裏?

回答

1

我設法通過另一種方式獲取信息。截獲httpchannel後,我使用下面的代碼來查看請求源自xhr請求:

try 
{ 
    var callbacks = httpChannel.notificationCallbacks; 
    if (callbacks) { 
     var xhrInterface = callbacks.getInterface(Components.interfaces.nsIXMLHttpRequest); 
     // XHR REQUEST 
    } 
} 
catch (exc) 
{ 
    if (exc.name == "NS_NOINTERFACE") { 
     // NO XHR REQUEST 
    } 
} 
相關問題