繁体   English   中英

Gmail Chrome扩展程序“ chrome.extension”未定义

[英]Gmail Chrome Extension “chrome.extension” undefined

我在Gmail用户界面中运行了一个内容脚本,并且在不同的位置注入了一些新的HTML。 一切正常,但是为了保持代码整洁,我想在单个函数调用中将预定义的HTML标记插入页面的某些部分。

使用chrome.extension.getURL()这一切似乎都是可行的,但是当我进行测试时,好像chrome.extension是未定义的! 我在文档中找不到该定义的地方,也找不到它应该定义的地方。

我正在使用Chrome版本39.0.2171.95(64位)

chrome对象在javascript控制台中的外观如下:

铬物体

首先,有人知道为什么chrome.extension可能未定义吗? 其次,还有另一种(也许更好)的方法吗? 我宁愿不只是使用内容脚本中的jQuery等以编程方式在页面中注入大量HTML,而且如果没有其他方法,可以采用这种方法。

如果要在控制台中进行测试,则必须了解孤立世界的概念。 添加内容脚本时,它具有与页面隔离的单独的JavaScript上下文。

在“开发工具”的“控制台”选项卡的顶部,您会在下拉列表中看到<top frame> 这是一个下拉列表,用于选择要在其中执行的JS上下文。它将列出文档内的框架以及所有注入了内容脚本的扩展。

您在屏幕快照中显示的chrome对象与该网页通常看到的内容相对应。 如果切换上下文,则会看到不同的图片:

切换上下文

无论如何,如果您确实在内容脚本中执行chrome.extension.getURL() -它将得到很好的定义。


现在,如果您在页面中注入了<script>标记并在该代码中对其进行了尝试-它将再次失败,因为该代码将位于页面上下文中。 有关这种情况,请参阅此问题

最后,出于安全原因, 大多数 Chrome API不会公开给内容脚本。 如果未定义API时未定义,则可能需要一个后台页面来为您完成这项工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM