使用的是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秒多,只是一種暫時的方法,最好還是可以讀緩存。
一些參考資料:
基於 HTML5 中的 Web SQL Database 來構建應用程序
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,解決。
