2015-10-16 31 views
9

Dường như, bạn không thể sao chép một hình ảnh vào clipboard từ một ứng dụng web JavaScript?Sao chép hình ảnh vào clipboard

Tôi đã cố gắng sao chép văn bản trong clipboard và nó đã hoạt động.

Bây giờ tôi muốn sao chép một hình ảnh và sau khi tôi nhấn ctrl +v để dán vào Word hoặc Excel hoặc Paint.

Trả lời

0

Kiểm tra hướng dẫn này để sao chép và dán với JavaScript: https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/

Theo đó, Chrome, Safari, và Firefox tất cả hình ảnh hỗ trợ sao chép với văn bản đơn giản, trong khi IE chỉ cho phép sao chép văn bản. Trang được liên kết ở trên mô tả cách dịch vụ này sử dụng phần mở rộng để thêm chức năng này vào menu ngữ cảnh, nhưng có vẻ như một số trình duyệt hỗ trợ sao chép hình ảnh có lập trình.

+1

Không có hỗ trợ để sao chép dữ liệu hình ảnh vào clipboard trong chrome. https://bugs.chromium.org/p/chromium/issues/detail?id=150835. Có vẻ như nó đã được mở trong khoảng 4 năm nay. – notsiddhartha

11

Tôi tìm kiếm trên internet và không thể tìm thấy một giải pháp này vì vậy tôi đã đi trước và thử nghiệm. làm việc thành công trên tất cả các trình duyệt:

HTML Tôi đang sử dụng để thử nghiệm là:

<div class="copyable"> 
    <img src="images/sherlock.jpg" alt="Copy Image to Clipboard via Javascript."/> 
</div> 
<div class="copyable"> 
    <img src="images/stark.jpg" alt="Copy Image to Clipboard via Javascript."/> 
</div> 

JavaScript/jQuery Mã trông như thế này:

<script> 
     //Cross-browser function to select content 
     function SelectText(element) { 
      var doc = document; 
      if (doc.body.createTextRange) { 
       var range = document.body.createTextRange(); 
       range.moveToElementText(element); 
       range.select(); 
      } else if (window.getSelection) { 
       var selection = window.getSelection(); 
       var range = document.createRange(); 
       range.selectNodeContents(element); 
       selection.removeAllRanges(); 
       selection.addRange(range); 
      } 
     } 
     $(".copyable").click(function (e) { 
      //Make the container Div contenteditable 
      $(this).attr("contenteditable", true); 
      //Select the image 
      SelectText($(this).get(0)); 
      //Execute copy Command 
      //Note: This will ONLY work directly inside a click listenner 
      document.execCommand('copy'); 
      //Unselect the content 
      window.getSelection().removeAllRanges(); 
      //Make the container Div uneditable again 
      $(this).removeAttr("contenteditable"); 
      //Success!! 
      alert("image copied!"); 
     }); 
</script> 

đã tải lên trên GitHub cũng như: https://github.com/owaisafaq/copier-js

+2

Không hoạt động trên Chrome 55 – benkol

+2

Điều này không thêm 'DataTransferItem' của loại' tệp' vào 'ClipboardEvent' nhưng thuần túy" Sao chép hình ảnh "từ menu ngữ cảnh của trình duyệt web. Về cơ bản, mã này chuyển hình ảnh dưới dạng nội dung HTML thay vì hình ảnh thuần túy. – czerny

+1

Không hoạt động trong Firefox 56, Chrome 61 và Opera 48. Bạn đã sử dụng trình duyệt nào? –

Các vấn đề liên quan