2011-07-20 24 views
2

对于我在Windows和MacOSX(包括Windows下的Chrome)中尝试使用“iframe填充”的所有其他浏览器都可以正常工作。但是,我无法通过Mac上的Chrome浏览器插件来使用iframe填充程序。屏蔽插件(或applet)以在Mac上的Chrome上显示HTML内容

已经Google搜索了这个问题,并做了一些测试,它似乎取决于对象。我找到了一个使用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

,这里是使用街景服务工作版本:http://gmaps-samples.googlecode.com/svn/trunk/streetview/iframeshim.html

通过检查(和编辑)Chrome中的元素并在两个示例页面之间复制对象,它看起来像是flash对象j ust允许iframe填充(在Mac上的Chrome中),但是Java Applet不支持。

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

这可能是我需要在我们的插件中实现额外的功能,模仿任何闪存正在做的事情,但这可能是由Mac的Mac版本中的错误造成的。

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

回答

2

合成的缺乏是任何使用Core Animation或Invalidating Core Animation的插件的Mac Chrome中的已知错误。它将在未来的某个版本中得到解决 - 理论上,您绝不需要在Mac上使用iframe hack,插件应该始终正确组合。如果您有兴趣,可以使用NPN_GetValue和值74656来检测是否在插件中动态支持Core Animation的合成(请参阅WebKit源代码中的WKNVSupportsCompositingCoreAnimationPluginsBool;这应该尽快添加到正式的NPAPI规范中,但值不会改变,所以你现在可以硬编码,当Chrome支持它,将开始返回true)。

一般来说,iframe hack应该可以在最近版本的Chrome中使用(你正在测试哪个版本?),但是有些bug在页面重新排版前才会被注意到,所以你可能想要玩强迫。

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

+0

谢谢,这很有道理。我使用的是最新的稳定版Chrome(12.0.742.122)。切换到测试版流(目前版本为13.0.782.55)实际上解决了这个问题,所以它将在未来的某个点上得到修复。 –

+0

目前这似乎不适用于Windows 7上的Chrome。 – jlarson

1

您使用的是什么绘图方法?你不需要在Mac上的插件上使用iframe,因为所有的绘图都是没有窗口的,除非你做了奇怪的事情,我认为Chrome不可能实现(例如,在coregraphics或quickdraw上下文中创建opengl上下文)。如果你正在做这样的事情,那么你可能无法做任何事情。

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

+1

我刚刚查过一个Chrome家伙;另外Chrome不能合成CoreAnimation,所以你不能在它上面覆盖任何东西。 – taxilian

相关问题