मेरा प्रारंभिक लक्ष्य क्लिपबोर्ड से चिपकाई गई छवि प्राप्त करना है। लेकिन मुझे पेस्ट इवेंट पाने में परेशानी है।जावास्क्रिप्ट पेस्ट इवेंट क्रोम में ठीक काम कर रहा है लेकिन फ़ायरफ़ॉक्स
JSFiddle, जहां मैं इस समस्या reproduced में, HTML केवल एक div शामिल हैं:
<div style="width: 200px; height: 200px; background: grey" id="pasteTarget" > </div>
जावास्क्रिप्ट पहले मेरी समारोह handlePaste() पेस्ट घटना को बांधता है।
window.onload = function() {
//adding paste event listener on the div
document.getElementById("pasteTarget").
addEventListener("paste", handlePaste);
};
इस समारोह जब उपयोगकर्ता प्रेस Ctrl + V या चयन "पेस्ट" ब्राउज़र के मेनू में कहा जा माना जाता है।
function handlePaste(e) {
alert("I'm in handlePaste");
for (var i = 0 ; i < e.clipboardData.items.length ; i++) {
var item = e.clipboardData.items[i];
console.log("Item: " + item.type);
alert(item.type);
}
}
महत्वपूर्ण: यह फ़ंक्शन क्लिपबोर्ड की सामग्री प्राप्त करने के लिए e.clipboardData तक पहुंचता है। उदाहरण के लिए, यदि आप PrtScrn कुंजी दबाते हैं, तो Ctrl + V, आप हैंडलपेस्ट विधि में एक प्रिंट स्क्रीन छवि भेजते हैं। अंतिम चेतावनी "छवि/पीएनजी" दिखाती है जब यह ठीक काम करती है।
क्रोम v37: जेएसफ़िल्ड ठीक काम करता है। फ़ायरफ़ॉक्स v32: हैंडलपेस्ट() विधि नहीं कहा जाता है, पहली चेतावनी पॉपअप नहीं होती है।
jsFiddle कोड: http://jsfiddle.net/demeylau/ke44bufm/1/
मुझे संदेह है कि आप किसी भी संपादन योग्य तत्व – ovi
@Ovi में पेस्ट कर सकते हैं - क्या यह क्रोम में काम करेगा क्योंकि क्रोम में एक प्रकार का बग है? –