2011-12-04 80 views
3

當我完成使用FireBreath和OpenGL編寫我的瀏覽器插件,並使用對象標記嵌入插件後,我試圖覆蓋插件頂部的各種HTML元素。不幸的是,無論我嘗試了什麼,標記和插件圖形都始終保持在頁面上任何其他HTML元素的頂部。HTML上的NPAPI插件

據我所知,flash插件允許HTML覆蓋如下:

<param name="wmode" value="transparent"> 

有沒有一種通用的方法來啓用HTML覆蓋或標籤?如果沒有,是否有方法在NPAPI/ActiveX插件上啓用覆蓋,或者FireBreath支持該功能?

計算器一直是我的主要資源,因爲我開始編程,所以非常感謝大家!

回答

7

有兩種類型的插件;開窗和無窗。 FireBreath確實支持無窗口插件(從插件類中的isWindowless函數返回true),如果你做了一個無窗口插件,那麼你可以在插件上覆蓋HTML,如果你做了一個窗口插件,那麼你不能。 ,這聽起來並不容易,如果你仔細閱讀,你會發現wmode = transparent的flash性能不如使用普通wmode的效果,原因在於,爲了繪製無窗口,你必須繪製幸運的是,你可以讓瀏覽器告訴你重繪(在FireBreath中調用PluginWindowlessWin對象的InvalidateWindow,你會得到你的窗口)

不幸的是,使用無窗口繪圖模式不要獲得hWND - 只是一個hDC,它只對繪製事件(FireBreath中的RefreshEvent)有效。盡我所能確定,你不能在hDC上創建一個opengl繪圖上下文,這可能會在繪製調用之間改變或消失,所以我看到一個opengl插件在Windows上的無窗口繪圖上工作的唯一方法是繪製離屏,然後使用GDI將位傳送給hDC。

這裏是一個將借鑑使用兩種類型的圖(窗口或窗戶),可以幫助你鞏固你的東西我一直在嘗試上述解釋理解原始位圖的例子:https://gist.github.com/1068352

5

嘗試這種解決方案這對我來說非常合適。

放置插件下方的虛擬的IFrame,把你需要的HTML在它下面一個div。

<object id="myPlugin" height="yourRequiredHeight" width="yourRequiredWidth"></object> 

<div id="wrapperDiv"> 
    <iframe class="myClass" > </iframe> 
    <div class="myClass" > My html goes here. It will be placed over the plugin! </div> 

</div> 

和CSS

.myClass

{ 

position:absolute; 
width:250px; // your required height and width for the overlay html 
height:250px; 
other css as per your style 

} 
+0

這個方法對我的作品。我的插件使用FB開發並加窗。 –

+1

簡單而聰明。你沒有獲得透明度,但對於在你的主頁上保留html沒有像過去那樣大驚小怪地使用iframe內容很好。 – mcanfield