获取导致请求发送的DOM元素

时间:2013-07-25 22:33:24

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

nsIChannel / nsIStreamListener是否有办法获取导致请求首先发送的HTML元素?

我订阅了http-on-examine-response,我正在使用nsITraceableChannel.setNewListener来阅读和修改传入的内容。我只想修改从script标签加载的javascript内容,但我还没有找到一种可靠的方法来确定哪些响应是合适的。 MIME标头不可信任。我可以访问有关FF计划使用此请求的信息吗?

也许与负载组中的回调或观察者有关?

编辑: 是nsIContentPolicy.shouldLoad的aContentType参数值得信赖吗?如果我能够通过频道传递信息,我会被设置......

1 个答案:

答案 0 :(得分:0)

  

是nsIContentPolicy.shouldLoad值得信赖的aContentType参数吗?

AFAIK,是的,就涉及核心代码而言,但期望附加组件行为不端。

nsScriptLoader实现将在加载外部脚本之前检查它。其他核心代码不(ab)使用相同的类型。但请记住,不会通知您内联脚本。此外,对于脚本,aContextshouldLoad应该是nsIScriptElement(不可编写脚本),这也是一个nsIScriptLoaderObserver(可编写脚本),可能是nsIDOMHTMLScriptElement,所以我想你可以QI/instanceof aContext来确保。

至于通过http-observers从nsIChannel获取元素:我认为不可能这样做。我上面提到的脚本元素将被填充到一个不可编写脚本的nsScriptLoadRequest中,而nsIChannel.asyncOpen()又作为上下文提供给{{1}},因此即使它是可编写脚本的,它也不可用。