2012-02-10 58 views
6

Tôi muốn kích hoạt sự kiện onpaste trên phần tử để truy xuất dữ liệu trong clipboard (Tôi muốn kiểm tra xem hình ảnh có tồn tại trong khay nhớ tạm và tải nó lên máy chủ) hay không. Nó hoạt động hoàn hảo trên Chrome:Cách lấy dữ liệu từ clipboard trong Firefox

$('#textarea')[0].onpaste = function(event) 
{ 
    var items = event.clipboardData.items; 

    if (items.length) 
    { 
     var blob = items[0].getAsFile(); 
     var fr = new FileReader(); 

     fr.onload = function(e) 
     { 
      alert('got it!'); 
     } 

     fr.readAsDataURL(blob); 
    } 
} 

Không hoạt động trên Firefox: event.clipboardData.items không tồn tại. Bạn có bất kỳ ý tưởng làm thế nào để retrive sự kiện onpaste trong phần tử?

+0

Firefox không cho phép bạn truy cập vào clipboard vì lý do bảo mật. Dù sao câu hỏi của bạn là một bản sao của http://stackoverflow.com/questions/127040/copy-put-text-on-the-clipboard-with-firefox-safari-and-chrome –

Trả lời

0

Chắc chắn tôi có thể. Trong ví dụ này, tôi lấy hình ảnh từ clipboard sau khi sử dụng tổ hợp phím Ctrl + V:

<div id="foo" style="width: 200px; height: 200px" contenteditable="true">Paste here!</div> 
$('#foo')[0].onpaste = function(e) 
{     
    setTimeout(function() 
    { 
     var blob = $('#foo img').attr('src'); 


     $.post('/upload/image', {'data': blob}, function(result) 
     { 


     }, 'json'); 

    }, 200); 
} 

Nó hoạt động với <div> yếu tố đó có contenteditable thuộc tính, nhưng không làm việc với <textarea>

T.B. Xin lỗi vì đã trả lời câu hỏi của riêng tôi nhưng đoạn mã này có thể giúp ai đó.

+0

Xin chào, tôi cần sự giúp đỡ của bạn. Giải pháp của bạn là chính xác nhưng tôi có một nghi ngờ nếu div contenteditable đã chứa 2 hình ảnh và khi tôi Crtl + V sau đó nó tải lên tổng số 3 hình ảnh trên máy chủ? –

+0

Vâng ... ở trên mã tải lên tất cả mọi thứ trong thuộc tính 'src'. – Bald

+0

tôi biết nó tải lên giá trị thuộc tính src, nhưng tôi muốn biết nếu có 3 src đã có sẵn trong div sau đó nó tải lên tổng số 4 src (trong đó 3 đã có và thứ 4 mới được dán) ?? –

2

Bạn cần phải tạo một div contenteditable mà sẽ giữ hình ảnh về dán

var pasteCatcher = $('<div/>',{'id':'container'}); 
$('body').append(pasteCatcher); 
var pasteCatcher = document.getElementById('container'); 
       pasteCatcher.setAttribute("contenteditable", ""); 

sau đó bạn cần phải chờ đợi để dán kiện và xử lý nó

window.addEventListener("paste",processEvent); 
function processEvent(e) { 
//some functionality 
} 

Cũng viết mã để lấy dữ liệu hình ảnh từ div có thể chỉnh sửa và gửi nó tới máy chủ.

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