CefBrowser 復制圖片解決辦法


使用的是CefSharp控件,開放出的功能比較多,但是還是有一些封閉的。例如復制圖片到Clipbord,庫沒有提供。

VC雖然看得懂,但托管代碼沒搞過,看得很蛋痛,而且如果有CefSharp有新版本還要改,於是曲線解決。

先說IE,其有RangeControl,可以復制,但Chrome和Firefox都不支持,當然后二者都可以復制圖片。

問題主要原因,是不知道怎樣比緩存提取圖片。當然可以重新下載,但這樣就沒意義,如驗證碼或尺寸大的圖片,重新下載不合要求。因為CefSharp就是Chrome,有一個工具可以查看緩存,但沒有找到其源碼。不清楚緩存格式,無法提存,猜可能是一種小開型數據庫,例如Sqlite等,因為看devTools的資源部分,很有數據庫管理器的影子。

還有一種辦法是截屏,但這不是正路,如圖片被遮擋或縮放時。

 

Javasciprt剪貼板不能用,緩存又沒辦法查看,這個問題困擾了好久。

 

最后找到一種辦法,用Canvas標簽。

相關資料:   HTML 5 <canvas> 標簽   HTML 5 Canvas  HTML 5 Canvas 參考手冊  HTML DOM Canvas 對象  The canvas element  

最后用javascript 反調 c# 注冊的對象,傳回buffer數據,但如果圖片大一些,耗時會很多,我的300*100的圖片要1秒多,只是一種暫時的方法,最好還是可以讀緩存。

 

一些參考資料:

Managing application storage 

基於 HTML5 中的 Web SQL Database 來構建應用程序 

HTML5 LocalStorage 本地存儲 

HTML5開發學習(2):本地存儲之localStorage 、sessionStorage、globalStorage

HTML5開發學習(3):本地存儲之Web Sql Database(附源碼) 

W3C Web SQL Database  Web SQL databases 搜索 

 

 出現 SECURITY_ERR:DOM Exception 18 異常:

在本地調試時,會出現這個問題,安全性錯誤,其實是JS跨域訪問錯誤,因為之前是運行的客戶端嵌入的JS,將UniversalAccessFromFileUrlsAllowed 設置為true,只能使本機的調試網頁可以,但訪問外網時,當圖片和網站不一致,還會報錯,因為本身是嵌入使用瀏覽器,設置 WebSecurityDisabled=true,解決。

 SECURITY_ERR:DOM Exception 相關:  之一之二


免責聲明!

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



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