是否可以仅在文档的内容类型与特定模式匹配时才注入内容脚本?实际上,我的目标更简单:我需要将我的内容脚本注入HTML文档 (现在,它也注入了XML文档)。必须在“document_start”处注入内容脚本。
答案 0 :(得分:1)
我遇到了类似的问题,并通过以下方式解决了这个问题。
我没有限制注入内容脚本的各种文档,而是基于文档“Content-Type
,我决定将脚本注入所有文档,但只在适当的文档中执行。”
这是通过分析document.xmlVersion
和document.doctype
属性来完成的:
document.doctype
在HTML文档中必须不是null
; document.xmlVersion
在XML文档中必须不是null
; 因此,很容易使用其中任何一种来区分一种类型,并在适当时“绑定”所有必需的脚本内容。特别是,可以注入一个小脚本加载器,它会有条件地加载额外的,可能很重的东西。
Chrome仍然没有提供任何按文档类型限制脚本注入的方法。
答案 1 :(得分:0)
执行此操作的最有效方法是通过chrome.webRequest.onHeadersReceived
,它允许您查询和保留响应标头信息(包括Content-Type
)。很遗憾,此API目前尚未在Chrome的稳定版本中提供。 (您可以在Chrome的当前版本中使用实验API,但您将无法发布使用它的扩展程序。)
一种可能的解决方案是确定Chrome注入的文档是否被XML视为XML。 (如果是,请停止处理文档。)要完成此操作,请检查document.getElementById('webkit-xml-viewer-source-xml')
是否为null
。这是Chrome / webkit的XML查看器的元素部分。