编写Safari 4扩展程序的最佳方法
编写Safari扩展的最佳方法是什么?我已经为Firefox编写了几个XUL扩展,现在我想为Safari编写它们的版本。有没有一种方法可以让我们向浏览器UI添加按钮或者表单,因为使用输入管理器或者"服务"菜单无法做到这一点?
解决方案
回答
Safari插件开发并非易事。该接口是用Objective-C编写的,大多数甚至都不是WebKit的一部分(因此我们看不到源代码),但是有一种机制可以检查和修补正在运行的应用程序的对象层次。它需要了解可可和Objective-C,但不能低于此。
这是我在http://livingcode.org/2006/tab-dumping-in-safari流程书签中获得的高级概述。它介绍了使用Python和有效的(可能已过时)代码创建Safari插件的过程。除了Python,我们可以使用任何具有Objective-C绑定的东西。
它有两个主要部分:
- 我们需要将代码添加到正在运行的Safari。通常使用SIMBL http://www.culater.net/software/SIMBL/SIMBL.php完成此操作。
- 进入内部后,我们需要弄清楚要修补的内容。有一个关于可可应用程序反转的教程http://www.culater.net/wiki/moin.cgi/CocoaReverseEngineering,该教程链接到最重要的工具,类转储http://www.codethecode.com/projects/class- dump /(Wiki上的链接已断开)。类转储为我们提供了Safari类的完整层次结构,我们可以在其中按名称猜测具体需要修补的内容。这是一个非常反复试验的模式。
阅读上面的链接将为我们提供项目范围。
回答
Is there a way that would allow you to add buttons or forms to the browser UI, since this is not possible with an Input manager or Service menu?
实际上,使用InputManager可以实现。 Safari扩展的常用技术SIMBL只是InputManagers的包装,它代表Smart Input Manager捆绑程序加载器。我们可以通过扩展Safari的现有类,将内容添加到菜单栏,工具栏,对话框中的任何位置。
也就是说,为Safari编写扩展不仅很简单,而且完全不受支持。那里有一些相对受欢迎的工具,例如Inquisitor(最近被Yahoo!收购)和Google的Gears,但是在大多数情况下,它与Firefox的扩展非常不同,后者是一种受官方支持的,广泛使用的技术。
我们当然也想考虑Leopard上InputManagers的特殊限制。
回答
另外,需要注意的是,Apple已声明InputManagers从Leopard开始受到严格限制,并且根据Apple Leopard发行说明,它们不能在64位应用程序中运行。考虑到大多数应用程序将在Snow Leopard(包括Safari)中使用64位,这一点尤其有趣。 Apple肯定正在尝试淘汰InputManager,以作为重写和扩展功能的载体。 Safari迫切需要扩展机制。
回答
似乎没有人提到Safari实际上确实支持真正的插件,而输入管理器黑客绝对不支持。
"WebKit Plug-In Programming Topics" http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/
这样便实现了对PDF和Flash内容的支持之类的东西。看一下/ Library / Internet Plug-ins /目录中的示例。
当然,存在固有的局限性,就UI修改而言,我们可能无法完成我们希望实现的目标。 Safari插件无法完成Input Manager所能提供的所有功能,但是它们可以在任何位置的WebKit中以及将来的OS版本中使用。注意:默认情况下,Snow Leopard上的Safari是64位的,因此没有输入管理器可以工作。我已经缺少Safari AdBlock ... :-(我很乐意将其重写为一个真正的插件。
回答
最近情况发生了变化。 Apple现在有Safari 5的一部分提供的扩展API。我们可以在Apple网站上或者加入Safari开发人员计划中找到更多信息。
Safari扩展必须经过数字签名,但是我们可以从Apple免费获得签名证书。这是将扩展程序扩展到Safari的合法方法,而无需借助可能在每次Apple更新Safari时都会中断的黑客攻击。
回答
随着Safari 5.0的发布,Apple发布了新的扩展框架供开发人员使用。在功能上,它看起来类似于Firefox扩展框架,允许自定义按钮,工具栏,上下文菜单,使用javascript和html的注入5
在此链接更多
https://developer.apple.com/documentation/safariextensions
回答
苹果不需要Safari扩展程序的批准。我们只需拥有(免费)开发人员证书即可制作它们,但是我们可以将它们传递给他人,尽管Apple制造了Extension Gallery,但我们不必在那儿分发它。如我们所见,我们已经可以尝试许多扩展。该证书只是确保它未被篡改。
http://safariextensions.tumblr.com/
回答
如果要查看现有扩展以查看其工作方式,请从Safari扩展文件夹下载或者获取它,然后将.safariextz更改为.xar,然后使用Pacifist打开/提取以查看代码,如果要添加至Extension Builder应用程序。