2014-03-19 35 views
1

我有一個web應用程序,我想添加複製HTML和文本的能力...複製到剪貼板。不能讓zclip實際複製到剪貼板,但它似乎在抓取正確的數據

所以,我用Zeroclipboard擺弄,無法讓它工作,然後發現它不再被支持/開發。所以,我用了一個叫做Zclip的分支。

我想要一個單一的函數,我可以傳遞兩個div到...其中說「複製文本」的div /按鈕是...以及我們想要複製文本的目標div的位置。我插入「警報」告訴我我得到/嘗試調試的距離有多遠。警報提示我們將正確的div /文本交給zclip。但每次我檢查我的剪貼板時,文本都不在那裏!

在FF,IE和Chrome上嘗試此操作。

所以,我開始剝離我的文件,試圖弄清楚這一點。這是一個測試頁面,我有:

<html> 
<head> 
    <script src="js/vendor/jquery-1.10.2.min.js"></script> 
    <script src="http://www.steamdev.com/zclip/js/jquery.zclip.min.js"></script> 
<script> 

$(document).ready(function(){ 

    var click_div_id = 'copy_results_table_to_CB'; 
    var source_div_id = 'results'; 

     alert("SetCopyableDiv was called for: click_div_id = " + click_div_id + "  source_div_id to copy = " + source_div_id); 

     $('#'+ click_div_id).zclip({ 
      path: 'http://www.steamdev.com/zclip/js/ZeroClipboard.swf', 
      copy: function(){ 
       var text = $('#' + source_div_id).text(); 
       alert("Copy attempt made. Text = " + text); 
       console.log(text); 
       return text; 
      }, 
      beforeCopy:function(){ 
      alert("Copy was pressed!"); 
      }, 
      afterCopy:function(){ 
       alert("Done with copy to clipboard!"); 
      } 
     }); 
}); 

</script> 
</head> 
<body> 

<div id="results" class="results"> 

<table class="data"> 
    <tr> 
    <th>Entry Header 1</th> 
    <th>Entry Header 2</th> 
    <th>Entry Header 3</th> 
    <th>Entry Header 4</th> 
    </tr> 
    <tr> 
    <td>Entry First Line 1</td> 
    <td>Entry First Line 2</td> 
    <td>Entry First Line 3</td> 
    <td>Entry First Line 4</td> 
    </tr> 
    <tr> 
    <td>Entry Line 1</td> 
    <td>Entry Line 2</td> 
    <td>Entry Line 3</td> 
    <td>Entry Line 4</td> 
    </tr> 
    <tr> 
    <td>Entry Last Line 1</td> 
    <td>Entry Last Line 2</td> 
    <td>Entry Last Line 3</td> 
    <td>Entry Last Line 4</td> 
    </tr> 
</table> 

</div> 

<button id="copy_results_table_to_CB">Copy to clipboard?</button> 

</body> 

我這有超過一個的jsfiddle在:http://jsfiddle.net/DR4296/V52eK/

有什麼奇怪的是,「複製」警報彈出,那麼「beforecopy」警報, 「後複製」從未出現過,這讓我覺得有些事情真的令人窒息。

有什麼想法?

回答

0

取出alert()copy處理程序,它應該工作:

http://jsfiddle.net/V52eK/2/

$(document).ready(function(){ 

    var click_div_id = 'copy_results_table_to_CB'; 
    var source_div_id = 'results'; 

     $('#'+ click_div_id).zclip({ 
      path: 'http://www.steamdev.com/zclip/js/ZeroClipboard.swf', 
      copy: function(){ 
       var text = $('#' + source_div_id).text(); 
       //alert("Copy attempt made. Text = " + text); 
       console.log(text); 
       return text; 
      }, 
      beforeCopy:function(){ 
       //alert("Copy was pressed!"); 
      }, 
      afterCopy:function(){ 
       //alert("Done with copy to clipboard!"); 
      } 
     }); 
}); 
+0

這似乎已經完成了帽子戲法。任何想法爲什麼?我對jQuery相當陌生,所以我很想知道爲什麼在那裏推一個警報。謝謝! – DaveyBoy

+0

@DaveyBoy,我認爲這是zclip(而不是jQuery)的問題,我檢查了它的代碼。 「複製」過程基於鼠標事件(mousedown),因此如果在mousedown處理程序中啓動警報,那麼似乎其他zclip事件(mouseleave)被觸發並且複製過程中止,當然,這只是一個理論,我看不到它太深。 – Roberto

+0

啊,對不起。我的第一篇文章。我沒有看到任何文字。沒有意識到我需要尋找左側的圖標。謝謝! – DaveyBoy