识别来自PageWorker的请求

时间:2013-12-31 10:36:44

标签: javascript firefox firefox-addon firefox-addon-sdk

是否可以从“http-on-modify-request”事件中识别哪些请求来自PageWorker对象,而不是来自可见选项卡/窗口的请求?

注意:由于重定向和子资源,此处的URL与pageWorkers contentURL属性的URL不同。

require("sdk/system/events").on("http-on-modify-request", function(e) {

    var httpChannel = e.subject.QueryInterface(Ci.nsIHttpChannel), 
        url = httpChannel.URI.spec, 
        origUrl = httpChannel.originalURI.spec;

    ...         
});  

1 个答案:

答案 0 :(得分:3)

我不知道如何区分page-worker请求和“常规”请求。

目前,页面工作者的实现方式如下:

  • SDK实际上会在<iframe>中创建hiddenWindow(技术上,在sdk/addon/window中,会在hiddenWindow中创建隐藏窗口)。 Mozilla应用程序中的hiddenWindow或多或少是一个始终存在的顶级XUL或HTML窗口,只是隐藏。
  • 工作页面已加载到iframe
  • 然后,页面工作者将对iframe上的DOM进行操作。

可以identify requests originating from the hidden window和隐藏窗口中的文档。

但是从代码判断,确定请求或关联文档是否属于page-worker,更不用说哪个page-worker实例似乎不可能了。 SDK本身可以将与请求相关联的文档映射回page-worker,因为它会保留一些WeakMap,但这是您无法访问的内部内容。

您只能说当一个请求不是来自hiddenWindow时,来自页面工作者的请求。

另外,请记住,有大量请求来自tabpage-worker:其他(XUL)窗口,附加组件,js模块和组件等...... < / p>

如果您感兴趣的加载项创建了page-workercontentURL属性应该在页面加载后反映最终的URI。

相关问题