2010-05-13 66 views
0

我試圖用Zeroclipboard將東西複製到剪貼板,但它似乎沒有工作。我的代碼:ZeroClipboard故障

HTML:

<textarea name="texter" id="texter"></textarea> 
<input type="button" value="Copy to clipboard" id="copy-button" /> 

的Javascript:

<script type="text/javascript"> 
jQuery(document).ready(function(){ 

    var clip = new ZeroClipboard.Client(); 
    clip.setText(''); 

    jQuery('#copy-button').click(function(){ 
    clip.setText(jQuery('#texter').val()); 
} 


}); 
</script> 

這有什麼錯呢? Thansk!

回答

4

有幾件事。

首先,你的括號稍微偏離。 它應該是:

jQuery(document).ready(function(){ 

    var clip = new ZeroClipboard.Client(); 
    clip.setText(''); 

    jQuery('#copy-button').click(function(){ 
    clip.setText(jQuery('#texter').val()); 
}); 
}); 

但是,這不會解決你的問題。

參考ZeroClipBoard instructions

你需要「膠水」或Flash影片鏈接到一個DOM元素在頁面上。這是複製文本將被存儲的地方。然後,您不能將jQuery用於click事件(或者如果可以的話,我誤解了文檔),但是您可以將mousedown事件註冊到您的按鈕並將其綁定到剪輯。

將此應用於您的代碼。

<script type="text/javascript"> 
     $(document).ready(function() { 
      var clip = new ZeroClipboard.Client(); 

      clip.setText(''); // will be set later on mouseDown 

      clip.addEventListener('mouseDown', function (client) { 
       // set text to copy here 
       clip.setText(jQuery('#texter').val()); 

       // alert("mouse down"); 
      }); 

      clip.glue('copy-button'); 
     }); 
</script> 

這應該有效。

你可以在不使用jQuery的情況下完全使用這個例子,但是在文檔中準備好它是一個很好的緊湊的地方,以確保它只有在DOM準備就緒後才能執行。並且還使用jQuery代替getElementById。

希望有所幫助。

0
<!-- <script type="text/javascript" src="http://davidwalsh.name/demo/ZeroClipboard.js"></script> --> 
    function copyText(fieldName,buttonName){ 
     var fieldNameTemp =fieldName; 
     var buttonNameTemp =buttonName; 
     var val = ""; 
     try{ 
      val = navigator.userAgent.toLowerCase(); 
     }catch(e){} 
     var swfurl = "js/ZeroClipboard.swf"; 
     setTimeout(function() { 
      ZeroClipboard.setMoviePath(swfurl); 
      var clip = new ZeroClipboard.Client(); 
      clip.addEventListener('mousedown', function() { 
       clip.setText(document.getElementById(fieldNameTemp).value); 
      }); 
      clip.addEventListener('complete', function (client, text) { 
       try{ 
        if(val.indexOf("opera") > -1 || val.indexOf("msie") > -1 || val.indexOf("safari") > -1 || val.indexOf("chrome") > -1){ 
         alert('Your text has been copied'); 
        } 
       }catch(e){ 
        alert('Please alert: not use on fireFox'); 
       } 
      }); 
      clip.glue(buttonNameTemp); 
     }, 2000); 
    }