2009-07-17 17 views
7

मैं पेस्ट करने से पहले क्लिपबोर्ड से सामग्री को संपादित करने के लिए जावास्क्रिप्ट फ़ंक्शन लिखने की कोशिश कर रहा हूं। अभी मैं JQuery के माध्यम से काम करने के लिए बाध्य घटना 'पेस्ट' मिला है।क्लिपबोर्ड डेटा प्राप्त करें

$(this.elementDoc).bind('paste', function(event){ 
    self.OnPaste(event); 
}); 

लेकिन यह महत्वपूर्ण नहीं है। अब मैं क्लिपबोर्ड से डेटा प्राप्त करना चाहता हूं, लेकिन मुझे यह नहीं पता कि कैसे। मैं हर संकेत के लिए खुश होगा।

उत्तर

4

यह एक कठिन है। अगर मुझे सही याद आती है, तो आईई क्लिपबोर्ड तक पहुंच की इजाजत देता है, लेकिन डिफ़ॉल्ट रूप से फ़ायरफ़ॉक्स सुरक्षा समस्याओं के कारण नहीं होता है। मुझे ऐसा प्रोजेक्ट के लिए ऐसा करना था जिस पर मैं काम कर रहा था, और प्रतिलिपि बनाने वाली एक छोटी एसडब्ल्यूएफ फ़ाइल का उपयोग करने के लिए मजबूर होना पड़ा।

http://www.jeffothy.com/weblog/clipboard-copy/

+0

जहां तक ​​मैं कह सकता हूं, यह समाधान क्लिपबोर्ड पर प्रतिलिपि बनाने की अनुमति देता है, लेकिन क्लिपबोर्ड से नहीं प्राप्त करता है। इसलिए, यह प्रस्तावित प्रश्न के समाधान का बिल्कुल समाधान नहीं है - मुझे नहीं पता कि इसे क्यों चिह्नित किया गया था (जब तक ओपी उलझन में नहीं था)। अगर मैं गलत हूं, तो कृपया समझाओ! – bgmCoder

1

यहाँ यह कैसे IE से या क्रोम से प्राप्त करने के लिए है। सबसे पहले यह वास्तविक पेस्ट को होने से रोकता है, फिर यह एक फीचर चेक करता है और फिर वेरिएबल टेक्स्ट को क्लिपबोर्ड टेक्स्ट पर सेट करता है। इसके साथ आप टेक्स्ट में हेरफेर कर सकते हैं, और उसके बाद इसे अपने पेस्टिंग इनपुट/तत्व के मूल्य के रूप में सेट कर सकते हैं, या जो भी आप इसके साथ करना चाहते हैं।

//get clipboard text 
event.preventDefault(); 
var text = null; 
if (window.clipboardData) 
    text = window.clipboardData.getData("Text"); 
else if (event.originalEvent && event.originalEvent.clipboardData) 
    text = event.originalEvent.clipboardData.getData("Text"); 

//manipulate the text 
text = '..do stuff with it..'; 
//set the text 
$(this).val(text); 
2

clipboardData में विभिन्न संभावित प्रारूपों में डेटा शामिल हो सकता है। यह संभव है कि एक प्रोग्राम कई प्रारूपों में क्लिपबोर्ड डेटा जोड़ देगा। प्रारूपों को देखने के लिए, clipboardData.types देखें।

अक्सर क्लिपबोर्ड डेटा में सादा पाठ होता है, और types में सूचीबद्ध पहला प्रकार एमआईएम प्रकार "टेक्स्ट/सादा" होगा। यदि आप ब्राउज़र से टेक्स्ट कॉपी करते हैं, तो आपको सूची में दो प्रकार दिखाई देंगे: "टेक्स्ट/सादा" और "टेक्स्ट/एचटीएमएल"। getData में आप किस स्ट्रिंग को पास करते हैं, इस पर निर्भर करते हुए, आप सादे पाठ, या HTML को पकड़ सकते हैं। ऐसा लगता है कि "टेक्स्ट" सादा "टेक्स्ट/सादा" और "यूआरएल" के लिए शॉर्टेंड है "टेक्स्ट/यूरी-लिस्ट" के लिए छोटा है।

element.addEventListener('paste', function(event) { 
    var cb = event.clipboardData 
    if(cb.types.indexOf("text/html") != -1) {  // contains html 
    var pastedContent = cb.getData("text/html") 
    } else if(cb.types.indexOf("text/html") != -1) { // contains text 
    var pastedContent = cb.getData("text/html") 
    } else { 
    var pastedContent = cb.getData(cb.types[0]) // get whatever it has 
    } 

    // do something with pastedContent 
}) 
कैसे clipboardData.getData उपयोग करने के लिए, the ugly spec देखने के बारे में अधिक जानकारी के लिए

+0

क्या आप समझा सकते हैं कि यह क्यों काम करना चाहिए? –

+0

स्पष्टीकरण का एक गुच्छा जोड़ा गया –

संबंधित मुद्दे