वर्तमान क्लिपबोर्ड सामग्री प्राप्त करें? [बन्द है]


106

मैं अपनी स्क्रिप्ट को क्लिपबोर्ड की सामग्री का पता लगाने और पृष्ठ को खोलने पर एक टेक्स्ट फ़ील्ड में पेस्ट करने का एक तरीका जानना चाहता हूं, जिसमें उपयोगकर्ता का कोई इनपुट नहीं है। यह कैसे किया जा सकता है?


आप वास्तव में नहीं जान सकते कि किसी उपयोगकर्ता के क्लिपबोर्ड में क्या है जब तक कि आपने पाठ की प्रतिलिपि बनाते समय किसी प्रकार के फ्लैश बैकएंड का उपयोग नहीं किया है। ------- अपडेट: यहां एक और सही उत्तर
Naftali उर्फ ​​नील



जवाबों:


74

window.clipboardData.getData('Text')कुछ ब्राउज़रों में काम करेगा। हालाँकि, कई ब्राउज़र जहां यह काम करते हैं, उपयोगकर्ता को यह संकेत देंगे कि वे वेब पेज को क्लिपबोर्ड तक पहुंचना चाहते हैं या नहीं।


17
क्या यह इंटरनेट एक्सप्लोरर के अलावा किसी भी ब्राउज़र में काम करेगा?
एंडरसन ग्रीन

6
शायद ऩही। इस प्रश्न को देखें: stackoverflow.com/questions/400212/…
डेव

7
आप यहां संगतता की जांच कर सकते हैं caniuse.com/#search=clipboardData
सर्गेई नोविकोव

1
नोड ऑब्जेक्ट द्वारा एक बेहतर समाधान प्राप्त किया जाता है, लेकिन विंडो ऑब्जेक्ट द्वारा नहीं। यहां
rplaurindo

66

के माध्यम से नए क्लिपबोर्ड एपीआई का उपयोग करें navigator.clipboard। इसका उपयोग इस तरह किया जा सकता है:

navigator.clipboard.readText()
  .then(text => {
    console.log('Pasted content: ', text);
  })
  .catch(err => {
    console.error('Failed to read clipboard contents: ', err);
  });

या एसिंक्स सिंटैक्स के साथ:

const text = await navigator.clipboard.readText();

ध्यान रखें कि यह उपयोगकर्ता को अनुमति अनुरोध संवाद बॉक्स के साथ संकेत देगा, इसलिए कोई मज़ेदार व्यवसाय संभव नहीं है।

(नोट: यदि कंसोल से कॉल किया जाता है तो यह काम नहीं करेगा, लेकिन सीधे उपयोगकर्ता कार्रवाई की आवश्यकता होगी जैसे कि एक बटन दबाने पर, धन्यवाद @Artur)

उस पर और अधिक

कल्पना


18
ध्यान दें कि कंसोल से कॉल करने पर यह हमेशा त्रुटि का कारण बनता है। लेकिन यह एक प्रत्यक्ष उपयोगकर्ता कार्रवाई पर काम करता है , जैसे जब आप पृष्ठ पर एक बटन दबाते हैं।
क्लेसुन

यह केवल सादे पाठ को वापस करने के लिए लगता है ... तब भी जब अमीर पाठ क्लिपबोर्ड पर होता है। मैं यह कैसे प्राप्त कर सकते हैं \?
माइकल

@Michael, छवियों और अन्य लोगों के लिए समर्थन सिर्फ पिछले क्रोम संस्करण (76) में जोड़ा गया था
iuliu.net

आप कंसोल में परीक्षण कर सकते हैं और setTimeoutफिर पेज पर क्लिक करके।
edbentley

18

आप उपयोग कर सकते हैं

window.clipboardData.getData('Text')

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


1
लिंक ठीक काम कर रहा है (फिर से)
स्टेफ़नोस

5
ZeroClipboard आपको केवल क्लिपबोर्ड पर कॉपी करने की अनुमति देता है , इसे पढ़ने से नहीं।
२२:२० बजे डीएसमोन

4

निम्नलिखित आपको चयनित सामग्री के साथ-साथ क्लिपबोर्ड को अपडेट करेगा।

कॉपी आईडी के साथ एलिमेंट आईडी को बांधें और फिर चयनित टेक्स्ट प्राप्त करें। आप पाठ को प्रतिस्थापित या संशोधित कर सकते हैं। क्लिपबोर्ड प्राप्त करें और नया पाठ सेट करें। सटीक स्वरूपण प्राप्त करने के लिए आपको "टेक्स्ट / एचएमटीएल" के रूप में टाइप करने की आवश्यकता है। आप तत्व के बजाय इसे दस्तावेज़ में बाँध भी सकते हैं।

      $(ElementId).bind('copy', function(event) {
        var selectedText = window.getSelection().toString(); 
        selectedText = selectedText.replace(/\u200B/g, "");

        clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData;
        clipboardData.setData('text/html', selectedText);

        event.preventDefault();
      });

20
इस साइट पर आपका स्वागत है! मुझे खुशी है कि आप एक प्रश्न का उत्तर देकर योगदान कर रहे हैं। लेकिन कृपया ध्यान रखें कि आपका उत्तर वास्तव में ओपी के प्रश्न का उत्तर नहीं देता है। प्रश्न क्लिपबोर्ड से सामग्री को पुनः प्राप्त कर रहा है और पृष्ठ को खोलते समय इसे कहीं पेस्ट कर रहा है। इसके अलावा, चूंकि प्रश्न में jquery टैग नहीं है , इसलिए jQuery के उत्तर में एक नोट होना चाहिए जिसमें एक पुस्तकालय (jQuery) का उपयोग किया जाता है।
कारेलग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.