火狐扩展与Greasemonkey脚本的区别是什么?

12

我一直在开发一个Firefox扩展,但进展很慢(部分原因是我没有时间工作)。我已经有了一个基本的框架,可以验证我能够与外部JSON API通信,在加载时修改任何网页,并显示偏好设置框。这些都是我编写扩展所必需的Hello Worlds(也许我不需要偏好设置框)。

突然间我意识到可能会有一个更容易的方法来完成它。由于Greasmonkey脚本可以编译成Firefox扩展,使用Greasemonkey可能是更好的一种方式:

  1. 这可能更容易(不确定)?
  2. 它可以跨浏览器使用(至少Safari和Firefox)?
  3. Greasemonkey脚本是否存在限制,相对于“本地”FF扩展?可以编写Chrome界面吗?可以弹出普通DIV吗?偏好设置可以存储(我认为可以)?

我正在寻找Greasemonkey与“本地”Firefox扩展的比较。还有,有人用过将Greasemonkey脚本编译成FF扩展(经验、问题)吗?

4个回答

6

一般来说,如果你的目的是修改网页的显示和功能,那么Greasemonkey是最好的选择。如果你需要展示许多窗口/用户界面,并且超出了Greasemonkey的核心意图,那么最好还是使用更传统的扩展程序。


谢谢Philfreo,这也是我的理解。同时,我想深入了解更多技术方面的内容,特别是编译Greasemonkey扩展(否则用户需要Greasemonkey,对吧?)。 - Dan Rosenstark
正确...但如果你想支持Safari,你仍然需要提供如何安装GreaseKit的说明...而使用Greasemonkey的人可能不想为Firefox安装扩展程序。 - philfreo

1

现在Google Chrome越来越受欢迎。它也有自己的扩展API。大多数简单的Greasemonkey脚本都可以在Google Chrome上安装,无需任何调整。如果您正在使用XHR,则可能需要创建Chrome扩展。

我相信现在Mozilla已经意识到Firefox扩展需要进行改进。目前他们正在推动Jetpack。他们应该早就从Greasemonkey的成功中汲取经验,改进扩展机制。

我只是想补充一下你的问题,除了Greasemonkey和Firefox扩展之外,还有更多的选择。您需要一个易于在多个浏览器上安装/运行的解决方案。

我会考虑要在浏览器扩展中实现哪些“功能”,然后查看哪种扩展机制(GM、Jetpack、FF扩展、Google Chrome扩展)支持所有功能。


1
自从问了这个问题后,我开始在Firefox中编译Greasemonkey脚本。效果非常好。
限制主要是无法通过Greasemonkey扩展来实现的。无法创建真正的Firefox插件首选项框,也无法做一些严肃的“Chrome”事情。你只能修改在页面加载之前出现的chrome.css。
可能还有其他限制(请参考Priyank的答案,涉及访问本地文件系统)。
正如philfreo所说,如果你的目的是修改网页,Greasemonkey是一个不错的选择。我在编译Greasemonkey扩展方面没有遇到任何问题(令人惊讶),它们能够像在Greasemonkey中一样正常工作。

1

有一件事是Greasemonkey脚本无法调用UniversalXPConnect。由于这个问题,我遇到了一些困难,不确定是否可以通过Firefox扩展来解决。但是我感觉受限制了,无法调用UniversalXPConnect并做一些重要的事情。


谢谢Priyank,我看到你在这里的另一个问题http://stackoverflow.com/questions/1284187/universalxpconnect-in-greasemonkey-script - Dan Rosenstark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接