【问题标题】:Show a window from 32-bit NPAPI Plugin in 64-bit Safari在 64 位 Safari 中显示来自 32 位 NPAPI 插件的窗口
【发布时间】:2010-02-23 11:13:57
【问题描述】:

我有一个用于 OS X 的旧 NPAPI 插件,我正在尝试对其进行改装,以便与 Snow Leopard 的 Safari 版本一起使用。我的问题是,当我将 Safari 切换到 64 位模式时,它会将插件环境更改为进程外模式(其中插件由 32 位 WebKitPluginHost 进程托管)。现在我的工具栏调色板在屏幕上不可见,即使它们所基于的 NSPanel 认为它们是可见的。文档说不建议打开窗口,但没有说禁止;我可以做些什么来调出我的 Windows 吗?

【问题讨论】:

    标签: safari 64-bit osx-snow-leopard npapi browser-plugin


    【解决方案1】:

    最可靠的解决方案是让另一个应用程序(可能通过某种 IPC 机制连接到您的插件)执行此操作Apple

    避免创建窗口。 目的是让插件在浏览器窗口中运行。尽管一些插件在历史上已经这样做了,但不建议在插件中创建窗口。如果您需要维护单独的窗口,您应该考虑启动一个单独的应用程序。

    从插件中调出窗口在某些情况下可能会起作用,但在不同的情况下会完全中断。通过建议不要这样做,Apple 可以随时打破您之前的工作行为。

    【讨论】:

      【解决方案2】:

      很遗憾,可能不会。如果您正在做任何使用普通图形库(CoreAnimation、Cocoa 等)无法完成的事情,您可能无法在 64 位 safari 中使用 32 位插件。

      不过,如果您在 64 位模式下编译您的插件,您可能会做得更多。我不知道:-/

      【讨论】:

      • 谢谢。这也是我一直在想的。因此问题。虽然我无法回头确认这一点,但 Safari 4.0.5 似乎更进了一步,并且也阻止了弹出菜单的显示。
      【解决方案3】:

      我知道我来晚了。 Safari 不允许插件显示 NSPanel。您应该尝试改用 NSWindow。我知道苹果不同意。

      为了显示菜单,您可以使用“popupcontextmenu”。它采用 NSMenu 类型转换的 NPNSMenu。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-10
        • 2011-03-24
        • 2017-10-27
        • 1970-01-01
        • 1970-01-01
        • 2013-08-19
        相关资源
        最近更新 更多