我有一个用于 OS X 的旧 NPAPI 插件,我正在尝试对其进行改装以与 Snow Leopard 的 Safari 版本一起使用。我的问题是,当我将 Safari 切换到 64 位模式时,它会将插件环境更改为进程外模式(其中插件由 32 位 WebKitPluginHost 进程托管)。现在我的工具栏调色板在屏幕上不可见,即使它们所基于的 NSPanel 认为它们是可见的。文档说不建议打开窗口,但没有说禁止;我可以做些什么来调出我的 Windows 吗?
问问题
844 次
3 回答
3
最可靠的解决方案是简单地让另一个应用程序(可能通过某种 IPC 机制连接到您的插件)执行Apple操作:
避免创建窗口。目的是让插件在浏览器窗口中运行。尽管一些插件在历史上已经这样做了,但不建议在插件中创建窗口。如果您需要维护单独的窗口,您应该考虑启动一个单独的应用程序。
从插件调出窗口在某些情况下可能会起作用,但会在不同的情况下完全中断。通过建议不要这样做,Apple 可以随时打破您之前的工作行为。
于 2010-04-05T07:45:22.163 回答
1
不幸的是,可能不是。如果您正在做任何使用普通图形库(CoreAnimation、Cocoa 等)无法完成的事情,您可能无法使用 64 位 safari 中的 32 位插件来完成。
不过,如果您在 64 位模式下编译插件,您可能会做得更多。我不知道 :-/
于 2010-03-14T00:34:00.297 回答
0
我知道我有点晚了。Safari 不允许插件显示 NSPanel。您应该尝试改用 NSWindow。我知道苹果不同意。
要显示菜单,您可以使用“popupcontextmenu”。它采用 NSMenu 类型转换的 NPNSMenu。
于 2011-10-05T12:20:21.907 回答