2008-09-13 62 views
13

编写Safari扩展的最佳方式是什么?我为Firefox编写了一些XUL扩展,现在我想为它们编写它们的版本。有没有一种方法可以让你添加按钮或表单到浏览器用户界面,因为输入管理器或服务菜单是不可能的?编写Safari 4扩展的最佳方式

回答

13

Safari插件的开发并不重要。接口是用Objective-C编写的,其中大部分都不是WebKit的一部分(所以你看不到源代码),但是有机器来检查和修补正在运行的应用程序的对象层次结构。它需要了解Cocoa和Objective-C,但不要低。

下面是我在我的书签http://livingcode.org/2006/tab-dumping-in-safari的书签中的高级概述。它使用Python工作(可能是过时的)代码来创建Safari插件。你可以使用任何具有Objective-C绑定的东西来代替Python。

有两个主要部分是:

阅读上面的链接会给你项目的范围。

+0

只是为了澄清,输入管理器≠Safari插件。 Safari确实有一个插件架构,但与Firefox相比,这不是开发人员所期望的。这个答案为输入管理器方法提供了很好的建议。下面的答案提供了更多有关“真实”插件的信息,即使这种方法在本例中不太可能满足您的特定需求。 – 2009-08-10 19:27:41

+0

现在我想用simbl做一个safari插件,我已经阅读了可可逆向工程的扶手椅指南。但是执行方法时 - (void)加载;如何使用插件获取safari DOM对象,就像PIC或Flash URL一样?非常感谢你 ! – jin 2009-10-23 06:51:37

4

有没有一种方法可以让你添加按钮或窗体到浏览器的用户界面,因为这是不可能与输入管理器或服务菜单?

其实,用InputManager,它是可能的。 SIMBL,对于Safari扩展的常用的技术,只是围绕InputManagers的包装 - 它代表小号集市 NPUT 中号 anager undle 大号 oader。您可以通过简单地扩展Safari的现有类来将东西添加到菜单栏,工具栏,对话框中。也就是说,为Safari编写扩展不仅不是微不足道的,而且完全不受支持。这里有一些比较流行的,比如Inquisitor(最近被雅虎收购)和Google的Gears,但大多数情况下,它与Firefox的扩展非常不同,Firefox的扩展是官方支持和广泛使用的技术。

你也一定要考虑特殊的limitations of InputManagers on Leopard

0

此外,请注意 - 苹果已经声明,输入管理员Leopard严格限制,并且不会在每个Apple Leopard Release Notes的64位应用程序中运行。考虑到大多数应用程序在Snow Leopard(包括Safari)中都是64位的,这一点尤其有趣。 Apple肯定试图抹杀InputManager作为覆盖和扩展功能的向量。 Safari迫切需要一个扩展机制。

5

似乎没有人甚至提到Safari实际上支持真正的插件,而输入管理器最明显的不是。

“的WebKit插件编程主题” http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/

这东西像PDF和Flash内容支持是如何实现的。看看你的/Library/Internet Plug-ins/目录看看例子。

当然,它有固有的限制,你可能无法完成你所希望的UI修改。 Safari插件不能完成输入管理器入侵的所有功能,但它们可以在任何地方以及将来版本的操作系统中使用WebKit。 注意: Snow Leopard中Safari默认为64位,因此没有输入管理器的工作。我错过了Safari AdBlock已经... :-(我希望看到它被改写为一个真正的插件

10

最近事情发生了变化苹果现在有一个扩展API可用作Safari 5的一部分。你可以找到更多有关Apple's sitejoining the Safari Developer Program

扩展到Safari浏览器必须进行数字签名,但你可以从苹果的免费签名证书,这是合法的方式获得您的扩展到Safari浏览器,而不诉诸黑客很可能会导致每次苹果更新Safari时都会打破它

0

Safari扩展不需要批准由苹果。你只需要一个开发人员证书(免费)来制作它们,但是你可以通过它们,尽管苹果公司正在制作扩展程序库,但你不必通过那里发布它。正如你所看到的,今天已经有很多扩展可以使用。证书只是确保它没有被篡改。

http://safariextensions.tumblr.com/

0

如果你想看看现有的延伸,看看它是如何完成的,下载或从Safari扩展得到它的文件夹,然后更改.safariextz到所有.xar然后打开/与和平主义者提取查看代码以及是否要将其添加到Extension Builder应用程序。