1. 程式人生 > >.NET下WebBrowser的一個BUG以及其替代品—geckofx

.NET下WebBrowser的一個BUG以及其替代品—geckofx

今天研究一個小問題,在C#的WebBrowser下開啟奇藝網的視訊,經常整個FLASH就偏了,進度條控制條什麼的都沒有。

要全屏一下然後還原才能解決這個問題。

如下,圖1為webbrowser開啟,圖2為IE8開啟。webbrowser中整個偏了,並且沒有控制條。

然後試了一下用各種基於微軟Webbrowser控制元件的瀏覽器都有該問題。。用VS2010 建winform,WPF,silverlight用webbrowser全都有該問題……

然後我開啟Linux試了一下firefox,沒有該BUG。

於是我想,是不是有可以用於.NET下的firefox控制元件。搜了一下,有個基於.NET平臺開源的gecko引擎元件

—— geckofx

然後DOWN一堆東西,(它執行還需要flash for windows firefox外掛及xulrunner)

寫了個小工程測了一下,哇,果然解決該問題了!

它的方法也基本是仿照.NET webbrowser寫的,所以不會感到陌生。

極力推薦該元件——geckofx

附:簡單使用示例程式碼。

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.ComponentModel;  
  4. using System.Data;  
  5. using System.Drawing;  
  6. using System.Linq;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9. using Skybound.Gecko;  
  10. namespace geckofxBrowswer  
  11. {  
  12.     public partial class Form1 : Form  
  13.     {  
  14.         static private string xulrunnerPath = "C://xulrunner/";  
  15.         static private string testUrl = "http://www.qiyi.com/dianying/20100521/n14202.html";  
  16.         private GeckoWebBrowser Browser;  
  17.         public Form1()  
  18.         {  
  19.             InitializeComponent();  
  20.             Skybound.Gecko.Xpcom.Initialize(xulrunnerPath);  
  21.             Browser = new GeckoWebBrowser();  
  22.             Browser.Parent = this;  
  23.             Browser.Dock = DockStyle.Fill;   
  24.         }  
  25.         private void button1_Click(object sender, EventArgs e)  
  26.         {  
  27.             Browser.Navigate(testUrl);  
  28.         }  
  29.         private void button2_Click(object sender, EventArgs e)  
  30.         {  
  31.         }  
  32.     }  
  33. }  

 附: