是否可以从“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;
...
});
答案 0 :(得分:3)
我不知道如何区分page-worker
请求和“常规”请求。
目前,页面工作者的实现方式如下:
<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
时,来自页面工作者的请求。
另外,请记住,有大量请求来自tab
和page-worker
:其他(XUL)窗口,附加组件,js模块和组件等...... < / p>
如果您感兴趣的加载项创建了page-worker
:contentURL
属性应该在页面加载后反映最终的URI。