CefSharp 初用遇到的一些問題及解決方法


    之前用WebBrowser,打開網頁很卡,但因為並是太要求速度和體驗,所以可以顯示html就可以了。但是,現在要求顯示速度,最主要問題是WebBrowser控件的UserAgent,其實並不完全是IE(之前大家都以為是),而是7.0,有一個辦法可以在注冊表中修改,修改為10.0,但是在測試網站,如:http://whatsmyua.com/  ,顯示的是WebBrowser,而不是IE10。應該是這個問題,使很多網站都會提示,版本太低或不支持這款瀏覽器,這樣沒辦法正常顯示,雖然只有少部分,但遇到關鍵的網站干着急。

     找到CefSharp這個開發包,下載了源碼和執行文件,速度比WebBrowser要快不卡了,而且有錯誤提示的網站也都正常顯示了。但在分析源碼時,遇到一些問題,由於獨自研究耽擱一天多,以后也可能還會遇到,在此總結下。

     源碼分為幾個工程,有WinForm和Wpf兩種演示,雖然我很喜也更善長Wpf,但因為軟件效率的原因,還是只看WinForm,有支持的VC托管工程CefSharp和CefSharp.WinForms,另外有mvc方式的示例c#工程CefSharp.Example,執行文件依賴的是CefSharp.dll和CefSharp.WinForms.dll。另外,需要加入icudt.dll和libcef.dll,生成操作設置無,輸出設為新復制,因為CefSharp.dll需要,否則將會報錯。另外,CefSharp是x86編輯,需要修改使用的工程屬性在編譯目標設置為x86,否則有編譯警告。

    將locales及其下所有都設置為輸出,里面有個en-US.pak文件,如沒有,則應用程序會啟動顯示錯誤退出。

    再將devtools_resources.pak 設置為輸出,否則調用devtools時將報錯不能打開。(常見問題官網解釋)

    還有一個非常奇怪沒能解決的問題,想封裝WebView(CefSharp.WinForms.dll實現的瀏覽器類),到一個UserControl,但如果拖放這個控件到其它控件上或窗體上,則會報文件找不到CefSharp.dll或其依賴項,Reflector也沒能找到到底是缺了什么。只要是在userControl引用WebView的實例就會報錯,只能使用反射建立的辦法迂回建立了。誰知道原因和辦法,請發給我:)

    上面說的CefSharp.Example定義了一個繞的方案的解決控制與視圖間的關聯,這樣真的耦合低么,但我的需求很簡單,就是按WebBrowser的設計封裝一個相同方法的類,用來替換它。但后來發現,確實有必要,因為Cef的結構很繁雜,可能是功能多的原因吧。

    IWebBrowser 有XXXXXHandle屬性,用來控制瀏覽器的運行。之前我需要的不打開新窗口,只轉向,需要實現ILifeSpanHandler,然后返回true證明處理了。

    Cef分為系統初始化和設置參數,還有BrowserView的參數設置。更多的控制需要詳看CefSharp.Example,我仔細看過,沒什么不理解處。至於前面的VC工程實在沒有細看的耐心了,暫時不需要。

 

c++和c#聯合編成   使用webBrowser在網頁中插入js腳本並執行   一個ISchemeHandler例子   用javascript獲取圖片顏色


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM