我需要想办法在 Mac 上专门为 Safari 安装插件。如果我将文件复制到.plugin文件Internet Plug-ins夹中,Firefox 和 Google Chrome 在运行时也会检测到它们。
为了防止这种情况发生,我使用NP_UserAgentAPI 调用来确定用户代理,如果不是 Safari,则退出。但是,插件仍由 Google Chrome 和 Firefox 注册。无论如何都可以在没有任何浏览器注册插件的情况下做同样的事情吗?
如果你正在编写一个 NPAPI 插件,它应该可以在任何浏览器中工作。您能解释一下为什么要阻止运行其他浏览器的用户使用该插件吗?根据潜在需求,可能会有更好的方法。(例如,如果要与 Safari 扩展程序一起工作,您需要做的就是让您的扩展程序使用只有您的插件处理的 MIME 类型,然后其他浏览器是否检测到该插件并不重要,因为它永远不会被实例化)。
您是否只想针对Safari 或任何使用 Apple 的 WebKit 框架的浏览器?如果是后者,您可以编写WebKit 插件而不是 NPAPI 插件。
一种可能的解决方案是使用 JavaScript 检测浏览器,并且<object>仅当它是 Safari 时才将标签插入 HTML 页面。但当然,它不会阻止插件被注册。
另一种方法是为 Safari 编写 WebKit 插件。它甚至比 NPAPI 更容易实现。