【问题标题】:Masking a plugin (or applet) to show html content over it in Chrome on the Mac屏蔽插件(或小程序)以在 Mac 上的 Chrome 中显示 html 内容
【发布时间】:2011-07-20 10:17:15
【问题描述】:

对于我在 Windows 和 MacOSX(包括 Windows 下的 Chrome)中尝试过的所有其他浏览器,使用“iframe shim”可以正常工作。但是,我无法让 iframe 垫片在 Mac 上的 Chrome 中处理我们的插件。

在谷歌上搜索了问题并进行了一些测试,它似乎取决于对象。我找到了一个使用 StreetView(一个 Flash 对象)的示例,它可以工作,而另一个使用 Java Applet 的示例不工作。

一些链接:

这里是方法的描述:http://www.oratransplant.nl/2007/10/26/using-iframe-shim-to-partly-cover-a-java-applet/

这个使用 Java Applet 的例子来自上面的文章:http://www.oratransplant.nl/files/iframe_shim.html

这是使用 Streetview 的工作版本:http://gmaps-samples.googlecode.com/svn/trunk/streetview/iframeshim.html

通过在 Chrome 中检查(和编辑)元素并在两个示例页面之间复制对象,flash 对象似乎只允许 iframe shims(在 Mac 上的 Chrome 中),但 Java Applet 不允许。

在我们的例子中,我们使用的是使用 Firebreath 构建的自定义插件。

我可能需要在我们的插件中实现额外的功能,模仿 Flash 所做的一切,但这很可能是由 Chrome 的 Mac 版本中的错误引起的。

有人可以帮忙吗?我们确实希望能够在我们的插件上显示 HTML 元素,并且 iframe shim 几乎适用于所有浏览器/操作系统组合!

【问题讨论】:

    标签: html plugins iframe firebreath shim


    【解决方案1】:

    缺乏合成是 Mac Chrome 中的一个已知错误,任何使用 Core Animation 或 Invalidating Core Animation 的插件。这将在未来的某个版本中得到解决——理论上,您永远不需要在 Mac 上进行 iframe hack,并且插件应该始终正确合成。如果您有兴趣,您可以使用值为 74656 的 NPN_GetValue 检测插件中是否动态支持核心动画的合成(请参阅 WebKit 源代码中的 WKNVSupportsCompositingCoreAnimationPluginsBool ;这应该很快添加到正式的 NPAPI 规范中,但该值不会更改,因此您现在可以对其进行硬编码,并且当 Chrome 支持它时将开始返回 true)。

    一般来说,iframe hack 应该可以在最新版本的 Chrome 中工作(您正在测试哪个版本?),但是有一些错误在页面重新布局之前不会被注意到,所以您可能想要玩强迫它。

    请注意,您的 Streetview 示例不是 Mac Chrome 上的有效测试,因为它使用 wmode=opaque,这意味着它使用的是 CG 模式,而不是 CA 模式,因此无论 iframe hack 怎样,合成都可以完全正常工作。

    【讨论】:

    • 谢谢,这是有道理的。我使用的是最新的稳定版 Chrome (12.0.742.122)。切换到 beta 流(当前版本为 13.0.782.55)实际上解决了这个问题,所以它在未来某个时候得到修复。
    【解决方案2】:

    你用的是什么画法?您不需要在 Mac 上的插件上使用 iframe,因为所有绘图都是无窗口的,除非您正在做一些奇怪的事情,而我不希望 Chrome 可以做到(即在 coregraphics 或 quickdraw 上下文上创建 opengl 上下文)。如果您正在做类似的事情,那么您可能无能为力。

    一个简单的设置是将插件调整为 1x1 以有效地“隐藏”它。

    【讨论】:

    • 我刚刚咨询了一位 Chrome 人员;显然 Chrome 不能合成 CoreAnimation,所以你不能在它上面叠加任何东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    相关资源
    最近更新 更多