我正在开发一个扩展,它将读取 HTML 元素的值,然后对外部网站进行 API 调用,获取结果并将它们显示在新创建的 HTML 元素中。
在原生 chrome 扩展与用户脚本中编写它的优缺点是什么?
我正在开发一个扩展,它将读取 HTML 元素的值,然后对外部网站进行 API 调用,获取结果并将它们显示在新创建的 HTML 元素中。
在原生 chrome 扩展与用户脚本中编写它的优缺点是什么?
原生 Chrome 扩展程序和用户脚本之间存在一些差异。
有关Greasemonkey 脚本和 Chrome 用户脚本之间差异的列表,请参阅此 wiki 部分。
如果您想利用跨浏览器的用户脚本,请尽量不要使用GM_*
方法或unsafeWindow
.
从开发人员的角度来看,首选用户脚本或 Chrome 扩展没有任何优势,因为任何用户脚本都可以轻松嵌入到 Chrome 扩展中。
如果您从部署的角度来看这个主题,那么差异是显着的:
我建议开发原生扩展。您可以使用以下目录结构从用户脚本轻松创建 Chrome 扩展:
manifest.json
whatever.user.js
最小清单.json:
{
"name": "name of extension",
"version": "1",
"manifest_version": 2,
"content_scripts": [{
"js": ["whatever.user.js"],
"matches": ["http://example.com/*"]
}]
}
编写(和共享!)用户脚本的案例:只要您只使用普通的浏览器 DOM API,任何人都可以使用其他用户脚本轻松获取并运行您的脚本(通常只是安装而不进行编辑)有能力的浏览器。
当您使用 Google Chrome 时,针对它们的情况是,从 Chrome 21 开始,安装它们变得非常混乱:您需要右键单击安装链接,将其保存到磁盘,打开扩展页面,然后将保存的脚本拖到那里(是的),或者从 Chrome Web Store 安装TamperMonkey(它是免费的,并且对 Chrome 所做的基本上与 Greasemonkey 对 Firefox 所做的一样:为用户脚本安装和维护提供了一个可忍受的用户界面)。
虽然您只需要做您列出的事情,但您可能不需要任何比用户脚本本机提供的特权 API 访问权限:尝试在另一个站点上执行您将在 devtools 控制台中为脚本编写的 XMLHttpRequest 代码并且您'看看它是否足以满足您的需求。如今,许多 Web API 都允许 CORS 支持,这可能会使您的用例无需求助于专有的浏览器原生扩展 API。
直接与 Chrome 一起安装的用户脚本(即 Greasemonkey 脚本)最终会自动转换为带有内容脚本的扩展,因此它们本质上是相同的。用户脚本编写起来又快又容易,一个好的用户脚本可以在其他浏览器中得到支持。但是,Chrome 中的用户脚本存在一些限制。它们不能直接从网页读取或写入变量(仅共享标准 DOM)。他们不能制作跨域 XHR。相反,扩展功能更强大但更难开发。
似乎您必须编写 Chrome 扩展程序,因为您需要“对外部网站进行 API 调用”。