2012-02-10 29 views
6

Panodaki verileri almak için öğede onpaste olayını tetiklemek istiyorum (görüntünün panoda olup olmadığını kontrol etmek ve sunucuya yüklemek istiyorum). Bu Chrome mükemmel çalışır: Firefox'taki panodan veri nasıl elde edilir

$('#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); 
    } 
} 

Firefox üzerinde çalışmaz: event.clipboardData.items da mevcut değil. Öğesinde onpaste olayını nasıl geri alacağınız hakkında bir fikrin var mı?

+0

Firefox, güvenlik nedeniyle panoya erişmenize izin vermiyor. Her neyse, sorunuz http://stackoverflow.com/questions/127040/copy-put-text-on-the-clipboard-with-firefox-safari-and-chrome –

cevap

0

elimden Tabi. Bu örnekte ben kullandıktan sonra panodan görüntü almak 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); 
} 

Bu contenteditable niteliği vardır <div> elemanı ile çalışır, ancak <textarea>

P.S. ile çalışmıyor Kendi soruyu cevapladığım için üzgünüm, ancak bu kod parçası birine yardımcı olabilir.

+0

Hey, yardımınıza ihtiyacım var. Çözümünüz doğru, ancak ben de, eğer tartışılabilir div zaten 2 resim içeriyorsa ve ben de Crtl + V olduğunda, o zaman sunucuda toplam 3 resim yüklüyorsa, bir şüphem var mı? –

+0

İyi ... Yukarıdaki kod 'src' özniteliğinde olan her şeyi yükler. – Bald

+0

Ben src öznitelik değeri yüklemek biliyorum, ama ben div içinde mevcut 3 src olup olmadığını bilmek istiyorum o zaman toplam 4 src (3 zaten var ve 4 yeni yapıştırılır) yüklersiniz? –

2

Sen

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

o zaman

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

Ayrıca kapmak için kod yazmak paste olayı ve süreci beklemek gerekir macun görüntüyü yapacak bir contenteditable div oluşturmak için gereken contenteditable div gelen görüntü verileri ve sunucuya gönderir.

İlgili konular