2011-07-20 23 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

相關問題