Javascript 在firefox扩展上观察并保存http请求

Javascript 在firefox扩展上观察并保存http请求,javascript,firefox-addon,save,httprequest,observers,Javascript,Firefox Addon,Save,Httprequest,Observers,我正在创建一个简单的插件来捕获http请求并将其信息保存到文件中。保存模块工作,捕获模块也工作。属于每个窗口的所有http请求都保存到单独的文件中。例如,所有http请求从窗口1的任何选项卡保存到文件1.txt,从窗口2保存到文件2.txt等。 但现在我有问题,因为来自窗口2,3的请求。。。还保存到以前的文件。我的意思是: 来自窗口1的所有http请求都保存到1.txt(正常) 来自窗口2的所有http请求都保存为1.txt和2.txt 来自窗口3的所有http请求都保存为1.txt、2.txt

我正在创建一个简单的插件来捕获http请求并将其信息保存到文件中。保存模块工作,捕获模块也工作。属于每个窗口的所有http请求都保存到单独的文件中。例如,所有http请求从窗口1的任何选项卡保存到文件1.txt,从窗口2保存到文件2.txt等。 但现在我有问题,因为来自窗口2,3的请求。。。还保存到以前的文件。我的意思是:

  • 来自窗口1的所有http请求都保存到1.txt(正常)
  • 来自窗口2的所有http请求都保存为1.txt和2.txt
  • 来自窗口3的所有http请求都保存为1.txt、2.txt和3.txt

  • 我使用的是observer,但在测试中,我使用的是eventListener for click,它可以完美地工作。从窗口单击x仅为文件x保存。你知道有什么不对吗?

    观察者是全局的,而不是每个窗口。当您从覆盖脚本注册它们时,每个窗口都会有一个观察者,并且无论请求来自哪个窗口,每个观察者都会收到allhttp连接的通知(请记住:观察者是全局的)。哦,每个观察者还将收到每个没有任何相关窗口的请求的通知(例如,安全浏览请求刷新、其他组件、其他插件执行来自其代码模块的请求)

    您应该执行以下操作:

    • 重写代码,使整个应用程序只注册一个观察者。最简单的方法是在中实现它
    • 让观察者找出DOMWindow(如果有)、顶层窗口(如果有),并将其映射到特定文件。我已经给出了一些代码,将请求映射到http观察器中的DOMWindow和顶级窗口
    • 如何将请求映射到窗口和文件最终取决于您。您可以向代码模块注册每个顶级窗口,然后代码模块将为每个窗口生成一个id/文件名,然后在
      observe
      中使用该信息将请求窗口映射到id和文件

    好的,它有意义。明天我将尝试这个解决方案,但顺便问一下,如何用jsm实现observer?我在你的MDN链接中找不到