我正在OS X上开发一个应用程序(下载管理器类型),我希望通过Mozilla插件API NPAPI与主要的Mac浏览器(Safari,Firefox,Chrome,Opera,Camino)集成。我基本了解如何在Mac上注册我的应用程序来处理特定的URL和文件类型(通过Launch Services API,info.plist文件等),我也理解我可以注册特定的MIME类型在NPAPI中。但是,我发现NPAPI文档中几乎没有与外部应用程序集成的钩子,即在单击超链接并将此数据传递到外部应用程序时通过NPN_GetURL()
获取URL。我发现调用外部应用程序的唯一引用是C中的system
函数,我发现很难相信这是它可以完成的唯一方法。我知道其他Mac应用程序(下载管理器)能够以这种方式与浏览器集成,但似乎很少有关于它的文档。我误解了NPAPI的目的吗?
答案 0 :(得分:1)
是的,你误解了NPAPI的目的。对于拦截点击链接和更改浏览器行为等内容,您需要编写browser extensions,而不是插件。
见:
答案 1 :(得分:0)
NPAPI的实际API非常有限;他们通过直接系统调用做了多少插件。 system
不是您唯一的选择 - 您可以使用任何任何OS X应用程序(NSWorkspace
,Apple事件,IPC到launchd
- 注册服务等等) - 但是你不会在NPAPI中找到你想做的事情。