nsIChannel
/ nsIStreamListener
是否有办法获取导致请求首先发送的HTML元素?
我订阅了http-on-examine-response
,我正在使用nsITraceableChannel.setNewListener
来阅读和修改传入的内容。我只想修改从script
标签加载的javascript内容,但我还没有找到一种可靠的方法来确定哪些响应是合适的。 MIME标头不可信任。我可以访问有关FF计划使用此请求的信息吗?
也许与负载组中的回调或观察者有关?
编辑: 是nsIContentPolicy.shouldLoad的aContentType参数值得信赖吗?如果我能够通过频道传递信息,我会被设置......
答案 0 :(得分:0)
是nsIContentPolicy.shouldLoad值得信赖的aContentType参数吗?
AFAIK,是的,就涉及核心代码而言,但期望附加组件行为不端。
nsScriptLoader实现将在加载外部脚本之前检查它。其他核心代码不(ab)使用相同的类型。但请记住,不会通知您内联脚本。此外,对于脚本,aContext
到shouldLoad
应该是nsIScriptElement
(不可编写脚本),这也是一个nsIScriptLoaderObserver(可编写脚本),可能是nsIDOMHTMLScriptElement
,所以我想你可以QI/instanceof
aContext
来确保。
至于通过http-observers从nsIChannel
获取元素:我认为不可能这样做。我上面提到的脚本元素将被填充到一个不可编写脚本的nsScriptLoadRequest
中,而nsIChannel.asyncOpen()
又作为上下文提供给{{1}},因此即使它是可编写脚本的,它也不可用。