仅当文档的内容类型匹配特定模式时,才可以注入内容脚本?实际上,我的目标要简单得多:我需要将我的内容脚本注入到HTML文档而不是(现在,它也注入了XML文档)。内容脚本必须在“document_start”处注入。如何将Chrome扩展内容脚本限制为特定的内容类型?
5
A
回答
1
我来到了一个类似的问题,并通过以下方式解决它。
根据文档'Content-Type
,我决定将脚本注入到所有文档中,但仅在正确的文档中执行,而不是限制注入内容脚本的各种文档。
这通过分析document.xmlVersion
和document.doctype
属性来完成:
document.doctype
必须不是HTML文档中null
;document.xmlVersion
在XML文档中必须不是null
;
因此,很容易使用它们中的任何一种来区分一种类型,只在适当的时候“绑定”所有必需的脚本。特别是,可以注入小的脚本加载器,这会有条件地加载其他可能很重的东西。
Chrome浏览器不提供任何方法来限制文档类型的脚本注入。
0
执行此操作的最可靠的方法是通过chrome.webRequest.onHeadersReceived
,它允许您查询并保留响应标头信息(包括Content-Type
)。遗憾的是,目前该稳定版本的Chrome尚未推出此API。 (您可以在Chrome的当前版本中使用实验API,但是您将无法发布使用它的扩展名。)
一种可能的解决方案是确定是否正在使用Chrome处理注入的文档作为XML。 (如果是这样,请停止处理文档。)完成此操作的一个窍门是检查document.getElementById('webkit-xml-viewer-source-xml')
是否为null
。 Chrome/webkit的XML查看器的这个元素部分。
相关问题
- 1. Chrome扩展内容脚本
- 2. 内容脚本没有回应内容脚本的Chrome扩展
- 3. Chrome扩展内容脚本中的JQueryUI
- 4. Chrome扩展(内容脚本)缓存CSS
- 5. Chrome扩展引用/从内容脚本
- 6. 停止内容脚本在Chrome扩展
- 7. Chrome扩展 - 内容脚本点播
- 8. Chrome扩展程序 - 内容脚本匹配限于权限吗?
- 9. 使用Chrome扩展内容脚本嵌入其他内容
- 10. 将iframe从Chrome扩展内容脚本调整为动态内容
- 11. 如何将JQuery ui加载到Chrome扩展内容脚本中?
- 12. 内容类型的扩展
- 13. 如何将选定的内容复制到Chrome扩展中?
- 14. 如何刷新Chrome扩展的内容脚本,如DOM更改
- 15. Chrome扩展内容脚本访问扩展框架
- 16. 如何从Chrome扩展中的内容脚本获取变量?
- 17. 如何获得Chrome扩展的内容脚本在后台?
- 18. Chrome扩展:内容脚本和网页的脚本
- 19. 剪贴板复制/粘贴内容脚本(Chrome扩展)
- 20. Chrome扩展代码和内容脚本vs注入脚本
- 21. 从Chrome内容脚本扩展访问内嵌框架
- 22. 在Chrome扩展中,内容脚本不会影响iframe内部?
- 23. Chrome扩展内容脚本自定义UI
- 24. 为Chrome扩展插入内容脚本不起作用
- 25. Chrome扩展:如何检测是否使用内容脚本安装了扩展
- 26. Chrome扩展的内容脚本没有被注入特定网站
- 27. 如何将邮件从backgroundjs发送到Chrome扩展中的内容脚本?
- 28. 什么的内容脚本类型和内容样式类型
- 29. 在扩展的Chrome DevTools和内容脚本之间的沟通
- 30. 如何触发Chrome扩展程序,URL中给定散列的内容脚本?
如果您的内容脚本在执行操作之前添加了一个事件侦听器来等待文档加载,该怎么办?例如,'document.addEventListener(“DOMContentLoaded”,function(){do.stuff()};'。 – cheeken
这是我应该避免的,我的脚本必须先执行(在文档加载之前) – spektom
我明白了。在这种情况下,我没有其他建议,祝你好运。 – cheeken