2012-02-10 9 views
6

मैं क्लिपबोर्ड में डेटा पुनर्प्राप्त करने के लिए तत्व पर ऑनपेस्ट ईवेंट ट्रिगर करना चाहता हूं (मैं यह जांचना चाहता हूं कि क्लिपबोर्ड में छवि मौजूद है या इसे सर्वर में अपलोड करें)। यह क्रोम पर सही काम करता है:फ़ायरफ़ॉक्स में क्लिपबोर्ड से डेटा कैसे प्राप्त करें

$('#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 पर काम नहीं करता: event.clipboardData.items मौजूद नहीं है। क्या आपको कोई विचार है कि तत्व में ऑनपेस्ट ईवेंट को कैसे पुनः प्राप्त किया जाए?

+0

फ़ायरफ़ॉक्स सुरक्षा कारणों से आपको क्लिपबोर्ड तक पहुंचने की अनुमति नहीं देता है। वैसे भी आपका प्रश्न http://stackoverflow.com/questions/127040/copy-put-text-on-the-clipboard-with-firefox-safari-and-chrome –

उत्तर

1
+1

पर डुप्लिकेट है, पहला लिंक वास्तव में संबंधित नहीं है ; यह क्लिपबोर्ड पर पूर्ण, बिना शर्त पहुंच के बारे में है। – ThiefMaster

0

ज़रूर मैं कर सकते हैं। इस उदाहरण में मैं उपयोग करने के बाद क्लिपबोर्ड से छवि को पुनः प्राप्त 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); 
} 

यह <div> तत्व contenteditable विशेषता है कि साथ काम करता है, लेकिन साथ <textarea>

पी.एस. काम नहीं करता है मेरे अपने प्रश्न का उत्तर देने के लिए खेद है लेकिन कोड का यह टुकड़ा किसी की मदद कर सकता है।

+0

अरे मुझे आपकी मदद चाहिए। आपका समाधान सही है लेकिन मुझे संदेह है कि यदि सामग्री योग्य div में पहले से ही 2 छवियां हैं और जब मैं Crtl + V करता हूं तो यह सर्वर पर कुल 3 छवियां अपलोड करता है? –

+0

खैर ... उपरोक्त कोड 'src' विशेषता में मौजूद सभी चीज़ों को अपलोड करता है। – Bald

+0

मुझे पता है कि यह src विशेषता मान अपलोड करता है, लेकिन मैं जानना चाहता हूं कि div में 3 स्रोत पहले से उपलब्ध है या नहीं, तो यह कुल 4 स्रोत अपलोड करता है (जिसमें 3 पहले से मौजूद है और चौथा चिपका हुआ है) ?? –

2

आप एक contenteditable div जो पेस्ट पर छवि का आयोजन करेगा बनाने की जरूरत

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

तो आप इसके

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

भी हड़पने के लिए कोड लिखने पेस्ट घटना है और इस प्रक्रिया के लिए प्रतीक्षा करने की जरूरत है contenteditable div से छवि डेटा और इसे सर्वर पर भेजें।