编写 Safari 扩展的最佳方式是什么?我已经为 Firefox 编写了几个 XUL 扩展,现在我想为 Safari 编写它们的版本。有没有一种方法可以让您向浏览器 UI 添加按钮或表单,因为输入管理器或服务菜单无法实现这一点?

有帮助吗?

解决方案

随着Safari 5.0的发布,苹果发布了新的扩展框架供开发者使用。在功能上,它看起来类似于 Firefox 扩展框架,允许使用 javascript 和 html 5 自定义按钮、工具栏、上下文菜单、注入

更多内容请参见此链接

https://developer.apple.com/documentation/safariextensions

其他提示

Safari 插件开发并非易事。该界面是用 Objective-C 编写的,其中大部分甚至不是 WebKit 的一部分(因此您看不到源代码),但有一些机制可以检查和修补正在运行的应用程序的对象层次结构。它需要了解 Cocoa 和 Objective-C,但不能更低。

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

它有两个主要部分:

阅读上面的链接将为您提供该项目的范围。

最近情况发生了变化。Apple 现在提供了一个扩展 API,作为 Safari 5 的一部分。您可以了解更多信息 苹果网站 并由 加入 Safari 开发者计划.

Safari 的扩展必须经过数字签名,但您可以从 Apple 免费获取签名证书。这是将您的扩展程序引入 Safari 的合法方法,而无需诉诸黑客手段,而每次 Apple 更新 Safari 时,黑客手段都可能会被破坏。

似乎没有人提到 Safari 实际上确实支持真正的插件,而输入管理器 hack 绝对不支持。

《WebKit插件编程专题》 http://developer.apple.com/documentation/InternetWeb/Conceptual/WebKit_PluginProgTopic/

这就是对 PDF 和 Flash 内容的支持等功能的实现方式。看看你的内部 /Library/Internet Plug-ins/ 目录查看示例。

当然,它有其固有的局限性,就UI修改而言,你可能无法完成你所希望的事情。Safari 插件无法完成输入管理器 hack 所能完成的所有操作,但它们可以在任何地方的 WebKit 以及操作系统的未来版本中运行。 笔记: Snow Leopard 上的 Safari 默认为 64 位,因此输入管理器不起作用。我丢了 Safari 广告拦截 已经...:-( 我很乐意看到它被重写为一个真正的插件。

有没有一种方法可以让您向浏览器 UI 添加按钮或表单,因为输入管理器或服务菜单无法实现这一点?

实际上,使用InputManager,它 有可能。SIMBL 是 Safari 扩展的常用技术,它只是 InputManager 的包装器——它代表 S市场 输入 中号阿纳格 昂德尔 L船长。您可以将内容添加到菜单栏、工具栏、对话框、任何地方,只需扩展 Safari 的现有类即可。

也就是说,为 Safari 编写扩展不仅不简单,正如 æon 所说,而且完全不受支持。有一些相对流行的扩展,例如 Inquisitor(最近被雅虎收购)和 Google 的 Gears,但在大多数情况下,它与 Firefox 的扩展非常不同,后者是一种官方支持的、广泛使用的技术。

您肯定还想考虑特殊的情况 Leopard 上输入管理器的限制.

另外,需要注意的是 - Apple 表示,从 Leopard 开始,InputManager 受到严格限制,并且不会在 Apple 的 64 位应用程序中运行 Leopard 发行说明. 。考虑到 Snow Leopard 中的大多数应用程序都是 64 位的(大概包括 Safari),这一点尤其有趣。Apple 肯定是在试图消除 InputManager 作为覆盖和扩展功能的载体。Safari 迫切需要一种扩展机制。

Safari 扩展不需要获得苹果的批准。你只需拥有一个开发者证书(免费)来制作它们,但你可以传递它们,尽管苹果正在制作扩展库,但你不必通过那里分发它。正如您所看到的,您今天已经可以尝试很多扩展。该证书只是确保它没有被篡改。

http://safariextensions.tumblr.com/

如果您想查看现有扩展以​​了解其完成方式,请下载它或从 Safari 扩展文件夹中获取它,然后将 .safariextz 更改为 .xar,然后使用 Pacifist 打开/解压以查看代码,如果您想将其添加到扩展生成器应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top