2

我試圖通過用戶通過粘貼按Ctrl +V保存圖像/截圖到一個div #pasteImageDiv工作。它與Chrome工作正常,但沒有與IE工作。粘貼圖像不工作的IE瀏覽器,鍍鉻

我正在使用IE10。

直到現在,我所能找到的是,如果我粘貼任何文本到div #pasteImageDiv,它正確捕獲onpaste事件,即使在IE中。 但是,如果我粘貼圖像而不是文本,它甚至不會捕獲onpaste(IE甚至不會進入處理onpaste事件的函數)。

document.getElementById('pasteImageDiv').onpaste = function (event) {

它在Chrome工作以及我是否粘貼文本字符串或圖像。 我希望你明白我面臨的是什麼樣的問題。不過,如果需要任何其他信息,請告訴我。在IE11加入

\t $('#pasteImageHere, #pasteImageDiv').click(function(e){ //on paste image button click 
 
\t \t \t e.preventDefault(); 
 
\t \t \t $('#hideOnPaste').hide(); 
 
\t \t \t //document.getElementById('pasteImageDiv').click(); 
 
\t \t document.getElementById('pasteImageDiv').style.backgroundColor = "#F1F1F1"; 
 
\t \t document.getElementById('pasteImageDiv').onpaste = function (event) { 
 
\t \t \t \t $('#hideOnPaste').hide(); 
 
\t \t \t \t //console.log(event.clipboardData.getData('image/png')); 
 
\t \t \t // use event.originalEvent.clipboard for newer chrome versions 
 
\t \t \t var items = (event.clipboardData || event.originalEvent.clipboardData).items; 
 
\t \t \t console.log(JSON.stringify(items)); // will give you the mime types 
 
\t \t \t // find pasted image among pasted items 
 
\t \t \t var blob = null; 
 
\t \t \t for (var i = 0; i < items.length; i++) { 
 
\t \t \t \t if (items[i].type.indexOf("image") === 0) { 
 
\t \t \t \t blob = items[i].getAsFile(); 
 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t \t // load image if there is a pasted image 
 
\t \t \t if (blob !== null) { 
 
\t \t \t \t var reader = new FileReader(); 
 
\t \t \t \t reader.onload = function(event) { 
 
\t \t \t \t console.log(event.target.result); // data url! 
 
\t \t \t \t var elem = document.createElement("img"); 
 
\t \t \t \t elem.setAttribute("id", "pastedImage"); 
 
\t \t \t \t elem.setAttribute("height", "200"); 
 
\t \t \t \t elem.setAttribute("width", "300"); 
 
\t \t \t \t document.getElementById("pasteImageDiv").appendChild(elem); 
 
\t \t \t \t document.getElementById("pastedImage").src = event.target.result; 
 
\t \t \t \t document.getElementById('inputImageData').value = event.target.result; 
 
\t \t \t \t console.log($('#inputImageData').val()); 
 
\t \t \t \t $('#pastedImage').css('width', '300px'); 
 
\t \t \t \t $('#pastedImage').css('height', '200px'); 
 
\t \t \t \t document.getElementById("pastedImage").style.height = '200px'; 
 
\t \t \t \t }; 
 
\t \t \t \t reader.readAsDataURL(blob); 
 
\t \t \t \t $('#removePastedImage').show(); 
 
\t \t \t } 
 
\t \t \t 
 
\t \t \t } 
 
\t 
 
\t \t });

+1

只是IE10不支持AFAIK –

+0

它還在我看來,這樣是不是根本不夠給IE並希望它有效。 –

+1

我假設你在這裏說話可以滿足 - 如果不是不理我。我剛剛嘗試過,而Ctrl-V在IE7-11中爲我工作。 Edge和Chrome等只接受Ctrl-V在文檔中的粘貼*以粘貼需要右鍵單擊的外部副本,並從上下文菜單中選擇粘貼(如果可用)。 –

回答

1

圖像粘貼支持:

與IE11開始,從剪貼板粘貼圖像是通過默認base64編碼。用戶現在可以輕鬆安全地將圖像從本地文件系統複製並粘貼到網站的可用區域。 在IE11之前,在實時網站上(跨安全區域)粘貼本地圖像導致圖像圖標出現斷裂,作爲防止本地文件訪問的安全措施。

IE11是第一款支持從剪貼板直接粘貼圖像(例如,從照片編輯軟件或PrintScreen)粘貼圖像並粘貼包含本地圖像的HTML的應用程序(例如,用於存儲圖像的Microsoft Office等應用程序暫時在本地路徑中)。 DataURI或Blob都可以用來編碼這些圖像。

參考

相關問題