Javascript 使用Chrome扩展内容脚本嵌入其他内容
我正在开发一个Chrome扩展,它将为一组特定的页面添加内容。根据我的研究,听起来我想要的是一个能为适当页面执行的。我可以使用Javascript 使用Chrome扩展内容脚本嵌入其他内容,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在开发一个Chrome扩展,它将为一组特定的页面添加内容。根据我的研究,听起来我想要的是一个能为适当页面执行的。我可以使用content\u script.matchesmanifest.json字段指定“适当的页面” 然而,我遇到的问题是,内容脚本在一个孤立的世界中运行 我是如何设想我的扩展的,它是一组由内容脚本嵌入到适当页面上的内容。将包含用于构建UI页面内容的代码。后台页面,以及扩展后的UI页面,需要访问各种ChromeAPI(例如本地存储),并且能够发出跨域请求以检索其数据。然而,这
content\u script.matches
manifest.json字段指定“适当的页面”
然而,我遇到的问题是,内容脚本在一个孤立的世界中运行
我是如何设想我的扩展的,它是一组由内容脚本嵌入到适当页面上的内容。将包含用于构建UI页面内容的代码。后台页面,以及扩展后的UI页面,需要访问各种ChromeAPI(例如本地存储),并且能够发出跨域请求以检索其数据。然而,这似乎是不可能的,因为内容脚本在一个孤立的世界中运行,并且无法访问我需要的ChromeAPI
允许内容脚本从后台页面发送和接收数据,但不允许您获取UI页面并将其嵌入当前网页
我最初认为我在这方面取得了一些进展,当时我可以做一些修改,但这只会让我得到HTML文件本身。我的UI页面依赖于代码以编程方式构建内容——它不仅仅是一个静态HTML页面。“构建页面”JavaScript代码依赖于内容脚本不可用的ChromeAPI。因此,如果我只是尝试创建我的所有UI页面和JavaScript资源,我可以将它们注入页面,但它们无法运行
这就引出了我的问题:一个内容脚本如何能够下拉或嵌入,从而调用后台页面中的代码?Tldr:您需要阅读有关在内容/后台之间发送消息的内容。它在文档和许多示例中。根据我所能找到的,我所希望的架构(如我问题中所述)在Chrome扩展中是不可能的。Chrome的安全模型需要一种不同的方法。这是对我有用的东西
- 使您的模板、JavaScript文件和任何属于UI的内容
- 使用内容脚本加载这些资源,并在适当的时间/位置向用户显示它们
- ()对
API的任何调用都需要通过或完成。在我的例子中,“背景页面”是严格的JavaScript,没有HTMLchrome.*
- 您的内容脚本和UI可以发送到后台/事件页面
这种心理类比帮助我“重新设计”了我的应用程序,目前为止,这种方式在Chrome扩展安全模型中起作用。我最初考虑的更多是传统的桌面应用程序,整个应用程序可以做一些事情,比如跨域请求或写入文件系统。但是,Chrome扩展和应用程序不是这样工作的。仅供参考,内容脚本还可以发出跨域请求,使用Chrome API的部分内容(消息、存储和一些安全扩展实用程序)。后台页面无法发出原始TCP请求,因此SMTP也不是一个选项。(不是扩展名)可以访问API,因此理论上它们可以使用SMTP发送邮件。Chrome扩展无法写入live文件系统中的文件,但如果用户已批准该权限,则后台页面(而不是内容脚本)可以读取文件。如果你想要这些功能,可以看看Chrome应用程序。但是,这些不能集成到网页中。很显然,关于这里的所有选项,我还有很多要学习的。我再次更新了答案。