2011-04-11 37 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 
    } 
} 
相关问题