21

我正在开发一个扩展,它将读取 HTML 元素的值,然后对外部网站进行 API 调用,获取结果并将它们显示在新创建的 HTML 元素中。

在原生 chrome 扩展与用户脚本中编写它的优缺点是什么?

4

3 回答 3

16

原生 Chrome 扩展程序和用户脚本之间存在一些差异。

有关Greasemonkey 脚本和 Chrome 用户脚本之间差异的列表,请参阅此 wiki 部分。

如果您想利用跨浏览器的用户脚本,请尽量不要使用GM_*方法或unsafeWindow.

从开发人员的角度来看,首选用户脚本或 Chrome 扩展没有任何优势,因为任何用户脚本都可以轻松嵌入到 Chrome 扩展中。

如果您从部署的角度来看这个主题,那么差异是显着的:

  • 一键安装仅适用于 Chrome 网上应用店。仅限本机扩展。
  • 用户脚本和原生扩展都可以从本地文件浏览器拖到扩展页面来安装扩展。
    (用户脚本被转换为 Chrome 扩展;警告:见下文)
  • 原生用户脚本支持将在 2013 年底停止工作,因为转换后的用户脚本使用已弃用的清单版本 1 。

结论

我建议开发原生扩展。您可以使用以下目录结构从用户脚本轻松创建 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/*"]
      }]
}

也可以看看

于 2012-11-21T09:26:08.273 回答
2

编写(和共享!)用户脚本的案例:只要您只使用普通的浏览器 DOM API,任何人都可以使用其他用户脚本轻松获取并运行您的脚本(通常只是安装而不进行编辑)有能力的浏览器。

当您使用 Google Chrome 时,针对它们的情况是,从 Chrome 21 开始,安装它们变得非常混乱:您需要右键单击安装链接,将其保存到磁盘,打开扩展页面,然后将保存的脚本拖到那里(是的),或者从 Chrome Web Store 安装TamperMonkey(它是免费的,并且对 Chrome 所做的基本上与 Greasemonkey 对 Firefox 所做的一样:为用户脚本安装和维护提供了一个可忍受的用户界面)。

虽然您只需要做您列出的事情,但您可能不需要任何比用户脚本本机提供的特权 API 访问权限:尝试在另一个站点上执行您将在 devtools 控制台中为脚本编写的 XMLHttpRequest 代码并且您'看看它是否足以满足您的需求。如今,许多 Web API 都允许 CORS 支持,这可能会使您的用例无需求助于专有的浏览器原生扩展 API。

于 2012-11-25T06:36:23.677 回答
-3

直接与 Chrome 一起安装的用户脚本(即 Greasemonkey 脚本)最终会自动转换为带有内容脚本的扩展,因此它们本质上是相同的。用户脚本编写起来又快又容易,一个好的用户脚本可以在其他浏览器中得到支持。但是,Chrome 中的用户脚本存在一些限制。它们不能直接从网页读取或写入变量(仅共享标准 DOM)。他们不能制作跨域 XHR。相反,扩展功能更强大但更难开发。

似乎您必须编写 Chrome 扩展程序,因为您需要“对外部网站进行 API 调用”。

于 2012-11-21T07:06:07.357 回答