Firefox addon Firefox扩展观察响应

Firefox addon Firefox扩展观察响应,firefox-addon,firefox-addon-sdk,Firefox Addon,Firefox Addon Sdk,我正在尝试使用代码 //这是goelvivek 8附加模块的活动模块 exports.main=函数{ var httpRequestObserver= { 观察:功能主题、主题、数据 { 如果主题==检查响应{ ifconsole 控制台日志数据; } } }; var{Cc,Ci,Cr}=requirechrome; var observer=requireobserver服务; observerService=Components.classes[@mozilla.org/

我正在尝试使用代码

//这是goelvivek 8附加模块的活动模块 exports.main=函数{ var httpRequestObserver= { 观察:功能主题、主题、数据 { 如果主题==检查响应{ ifconsole 控制台日志数据; } } }; var{Cc,Ci,Cr}=requirechrome; var observer=requireobserver服务; observerService=Components.classes[@mozilla.org/observer-service;1]。 getServiceComponents.interfaces.nsIObserverService; observerService.AddObserverHttpRequestoObserver,检查响应时的http,false; };
但是line console.logdata;未在控制台日志中打印任何内容。为什么?

这是真正的片段吗?您应该会在错误控制台中看到关于未定义组件的错误。要么从require'chrome'获取它,要么使用requireobserver服务中的对象。

它是真正的代码片段吗?您应该会在错误控制台中看到关于未定义组件的错误。要么从require'chrome'获取,要么使用requireobserver服务中的对象。

除了Nickolay指出的问题外,观察者通常需要通过以下方式实现查询接口功能。下面是如何使用附加SDK完成此操作:

var{Cc,Ci,Cr,Cu}=requirechrome; var{XPCOMUtils}=Cu.impotresource://gre/modules/XPCOMUtils.jsm; var httpRequestObserver= { QueryInterface:XPCOMUtils.generateQI[Ci.nsIObserver,Ci.nsiSupportsWakReference], ... }; 但是,由于您已经需要,因此使用它会更容易:

var observer=requireobserver服务; observer.addhttp-on-inspect-response,onHttpRequest; 函数onHttpRequestsubject,数据 { ... }
这种方法的缺点是,observer服务是一个内部包,其API可能会在未来的附加SDK版本中发生更改。

除了Nickolay指出的问题外,observer还需要实现一个查询接口函数,通常是通过。下面是如何使用附加SDK完成此操作:

var{Cc,Ci,Cr,Cu}=requirechrome; var{XPCOMUtils}=Cu.impotresource://gre/modules/XPCOMUtils.jsm; var httpRequestObserver= { QueryInterface:XPCOMUtils.generateQI[Ci.nsIObserver,Ci.nsiSupportsWakReference], ... }; 但是,由于您已经需要,因此使用它会更容易:

var observer=requireobserver服务; observer.addhttp-on-inspect-response,onHttpRequest; 函数onHttpRequestsubject,数据 { ... }
这种方法的缺点是,observer服务是一个内部包,其API可能会在未来的附加SDK版本中发生变化。

实际上,更好的建议可能是使用Cc而不是Components.Class,使用Ci而不是Components.Interface,因为这些变量都已定义。实际上,更好的建议可能是使用Cc而不是Components.classes和Ci而不是Components.Interface,因为这些变量是定义的。我尝试了上面的示例,包括了您的代码,但没有得到输出。@user1275375:请随时检查错误控制台,而不是声明没有输出。这里的代码在附加SDK模块的上下文中正常工作。您可能会在内容脚本或其他上下文中运行它,但它并不适用于这些上下文。我刚刚在加载项生成器中创建了一个新的加载项,并将此代码包含在main.js中。至于错误,我在错误控制台中找不到任何错误。@user1275375:请随意创建一个新问题,以及您的代码。但是创建与新问题相同的问题可能会重复。我只是粘贴了这里显示的相同代码,并在提供的解决方案中包含了变量。我是否做错了什么?我尝试了上面的示例,包括您的代码,但没有得到输出。@user1275375:请随意检查错误控制台,而不是声明没有输出。这里的代码在附加SDK模块的上下文中正常工作。您可能会在内容脚本或其他上下文中运行它,但它并不适用于这些上下文。我刚刚在加载项生成器中创建了一个新的加载项,并将此代码包含在main.js中。至于错误,我在错误控制台中找不到任何错误。@user1275375:请随意创建一个新问题,以及您的代码。但是创建与新问题相同的问题可能会重复。我只是粘贴了这里显示的相同代码,并在提供的解决方案中包含了变量。我做错什么了吗?你用下面的解决方案得到数据了吗。如果是这样,请更新上面的代码,因为我尝试在main.js中粘贴相同的代码并进行了以下修改,但在console.log中没有得到任何内容。您是否使用以下解决方案获得了数据。如果是这样,请更新上面的代码,因为我尝试在main.js中粘贴相同的代码,并进行了以下修改,但在console.log中没有得到任何结果