2010-11-30 79 views
0

我需要找出一种方法来专门为Mac上的Safari安装插件。如果我将.plugin文件复制到Internet Plug-ins文件夹中,它们在运行时也会被Firefox和Google Chrome检测到。如何在浏览器注册之前在NPAPI插件中检测到UserAgent?

为了防止出现这种情况,我使用NP_UserAgent API调用来确定用户代理,如果它不是Safari,请退出。但是,插件仍由Google Chrome和Firefox注册。无论如何在没有浏览器注册插件的情况下做同样的事情?

回答

2

如果您正在编写一个NPAPI插件,它应该可以在任何浏览器中工作。你能解释为什么你试图阻止运行其他浏览器的用户使用插件吗?根据潜在的需要,可能会有更好的方法。 (例如,如果这要与Safari扩展一起使用,那么您所需要做的就是让您的扩展使用只有您的插件处理的MIME类型,然后其他浏览器是否检测到该插件并不重要,因为它将永远不会被实例化)。

你想只瞄准只有 Safari或任何使用Apple WebKit框架的浏览器?如果是后者,你可以写一个WebKit plugin而不是NPAPI插件。

+0

谢谢@smorgan ...认为这是我将如何前进。是的,你的猜测是绝对正确的......插件与Safari扩展一起工作。它实际上是Firefox和Chrome的现有扩展,我试图将它移植到Safari。是的,如果你喜欢它:) http://www.cloudmagic.com/ – themoondothshine 2010-12-02 04:37:02

0

其中一种可能的解决方案是使用JavaScript检测浏览器,并且仅在Safari中为<object>标签插入HTML页面。但是,当然,这并不妨碍插件的注册。

另一种方法是为Safari编写WebKit插件。它比NPAPI更容易实现。