2010-05-10 20 views
12

मुझे यह बात नहीं मिल सकती है। ZeroClipboard कैसे काम करना चाहिए? कॉपी किए गए टेक्स्ट पर फ्लैश-एलिमेंट को स्थानांतरित करने की आवश्यकता क्यों है? http://code.google.com/p/zeroclipboard/wiki/Instructionsवास्तव में jQuery में ZeroClipboard का उपयोग कैसे करें?

किसी ने मुझे एक ऐसा छोटा स्निपेट है, जो यह संभव क्लिपबोर्ड उपयोगकर्ताओं के चर में एक पाठ की प्रतिलिपि करने के लिए बनाता है, जब उपयोगकर्ता किसी लिंक पर क्लिक प्रदान कर सकते हैं:

मैं इस बात पढ़ा है। क्या यह भी संभव है? मुझे परवाह नहीं है, अगर यह सभी ब्राउज़रों पर काम नहीं करता है (उदाहरण के लिए आईई 6)।

मैं jQuery का उपयोग कर रहा हूं।

+23

उस पृष्ठ को देखते हुए, क्या किसी और ने नोटिस किया कि आईई को "इंटरनेट एक्सप्लोरर" कहा जाता है? – Eric

+5

मुझे लगता है कि यह ब्राउज़र के लिए सही शब्द है, लेकिन क्या किसी को मेरी मदद करने के लिए कुछ समय है? :) –

+2

@ एरिक +500 इसे देखने के लिए :) (ओह ठीक है, मैं सिर्फ टिप्पणी को ऊपर उठा सकता हूं) – Kamal

उत्तर

8

आपके द्वारा लिंक किए गए पृष्ठ पर दिए गए "न्यूनतम उदाहरण" कोड (http://code.google.com/p/zeroclipboard/wiki/Instructions#Minimal_Example) जो आप चाहते हैं वह प्रतीत होता है। मैंने इसे यहां कॉपी किया है और टेक्स्ट को एक वेरिएबल में डालने और फिर उस टेक्स्ट को क्लिपबोर्ड पर कॉपी करने के लिए बदल दिया है, क्योंकि आप इसमें रुचि रखते हैं। ध्यान दें कि, वास्तविक जीवन में, आप जो संभवतः करना चाहते हैं वह है कुछ फ़ंक्शन के भीतर clip.setText() भाग को कॉल करें, क्योंकि आपको पता नहीं हो सकता है कि उस पृष्ठ पर जब पृष्ठ पहली बार लोड किया गया था, तो आप किस पाठ को प्रतिलिपि बनाना चाहते हैं।

<html> 
<body> 
     <script type="text/javascript" src="ZeroClipboard.js"></script> 

     <div id="d_clip_button" style="border:1px solid black; padding:20px;">Copy To Clipboard</div> 

     <script language="JavaScript"> 
       var clip = new ZeroClipboard.Client(); 
       var myTextToCopy = "Hi, this is the text to copy!"; 
       clip.setText(myTextToCopy); 
       clip.glue('d_clip_button'); 
     </script> 
</body> 
</html> 

फ्लैश तत्व को "कॉपी किए गए टेक्स्ट पर" होने की आवश्यकता नहीं है; इसे जो भी डीओएम तत्व आप चाहते हैं उसे "चिपकाया" होना चाहिए, जिसे आप अपने उपयोगकर्ता को कुशल बनाना चाहते हैं - संभवतः एक बटन क्लिक करने के लिए। कारण यह है कि जावास्क्रिप्ट को क्लिपबोर्ड तक पहुंच नहीं है, इसलिए आपको इसके बजाय फ़्लैश का उपयोग करने की आवश्यकता है। लेकिन फ्लैश उपयोगकर्ता के क्लिक के जवाब में उपयोगकर्ता की मशीन पर ही काम कर सकता है - ताकि आप इसे एचटीएमएल तत्व पर अदृश्य ओवरले बनाकर फ्लैश पर क्लिक करने के लिए "चाल" कर सकें।

मुझे पता चलेगा कि उपयोगकर्ता के क्लिपबोर्ड पर प्रतिलिपि बनाने का विशेष उदाहरण शायद सौम्य है, यह दृष्टिकोण मुझे परेशान करता है, क्योंकि छिपे हुए फ़्लैश तत्व को और अधिक दुर्भावनापूर्ण चीज़ों की कल्पना करना मुश्किल नहीं होगा।

+0

अरे, आपके महान उत्तर के लिए धन्यवाद! पेस्ट करने के लिए कुछ नमूना कोड प्राप्त करने में कोई बदलाव? :) –

+0

ठीक है, जोड़ा नमूना कोड कॉपी और निर्देश पृष्ठ से थोड़ा संशोधित। –

+0

वाह, यह काम करता है। धन्यवाद! –

1

इस कोड को केवल क्रोम के साथ एक साथ मेरी सेटअप में काम करता है जब मैं

<script type="text/javascript" src="js-file-doesnt-exists-404.js"></script> 
<div> 
...... 
some stuff here 
...... 
.... 
</div> 
...some more stuff.... 
<the button> 
.... 

जब फ़ाइल शामिल बटन काम नहीं कर रहा निकाल दिया जाता है की तरह मेरे शरीर-क्षेत्र में कोई टैग है .... वास्तव में अजीब

3

थोड़ा अधिक जटिल jquery उदाहरण। पाठ की प्रतिलिपि जब

<script language="JavaScript"> 
      ZeroClipboard.setMoviePath('zeroclipboard/ZeroClipboard.swf'); 
     $(document).ready(function(){ 
       $(".clickme").each(function (i) { 
        var clip = new ZeroClipboard.Client(); 

        var myTextToCopy = $(this).val(); 
        clip.setText(myTextToCopy); 
         clip.addEventListener('complete', function (client, text) { 
       alert("Copied text to clipboard."); 
       }); 
        clip.glue($(this).attr("id")); 



       }); 


     }); 

    </script> 



<?php 
//these text boxes were in a loop 
for($i=0;$i<10;$i++) 
    echo "<input type=\"text\" id=\"x$i\" class=\"clickme\" value=\"$value"\" />"; 

?> 
1

ZeroClipboard के वर्तमान संस्करण वास्तव में a bug कि स्क्रिप्ट JacobM ने सुझाव दिया उपयोग कर एक जे एस त्रुटि का कारण हैं - इस परिदृश्य में:

  1. ZeroClipboard के लिए एक संदर्भ बनाएँ। ग्राहक() नए कन्स्ट्रक्टर से लौटा। (उदाहरण के लिए var clip = new ZeroClipboard.Client();)
  2. क्लिप.सेट टेक्स्ट ("स्ट्रिंग") करके टेक्स्ट सेट करें;
  3. बदलें डोम (छिपाने फ़्लैश फिल्म या एक पूर्वज तत्व)
  4. clip.setText कर ("कुछ अन्य स्ट्रिंग")

द्वारा फिर से पाठ सेट त्रुटियों के कारण से बचने के लिए माउसओवर घटना श्रोता इसके बजाय पाठ को सेट करने के लिए उपयोग किया जाना चाहिए:

<html> 
<body> 
    <script type="text/javascript" src="ZeroClipboard.js"></script> 

    <div id="d_clip_button">Copy To Clipboard</div> 

    <script language="JavaScript"> 
     var clip = new ZeroClipboard.Client(), 
      myTextToCopy = "Hi, this is the text to copy!";      
     clip.glue('d_clip_button'); 
     clip.addEventListener('onMouseOver', clipboardEvent); 
     function clipboardEvent() { 
      clip.setText(myTextToCopy); 
     } 
    </script> 
</body> 
</html> 

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

  • कोई संबंधित समस्या नहीं^_^