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