2011-04-03 59 views
3

我想選擇沒有標題的表格,它可以工作,但是我無法得到它,它會複製到剪貼板。選擇表格並將其複製到剪貼板

這裏的頁面:http://tuudik.lohv.eu/Asjad/EURXML/

下面的代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>ECB kursid seisuga: 2011-04-01 </title> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
<style type="text/css"> 
table 
{ 
border-collapse:collapse; 
} 
table, td, th 
{ 
border:1px solid black; 
} 
</style> 
<script type="text/javascript"> 
    function selectElementContents(el) { 
     var body = document.body, range, sel; 
     if (body.createTextRange) { 
      range = body.createTextRange(); 
      range.moveToElementText(el); 
      range.select(); 
      range.execCommand('Copy'); 
     } else if (document.createRange && window.getSelection) { 
      range = document.createRange(); 
      range.selectNodeContents(el); 
      sel = window.getSelection(); 
      sel.removeAllRanges(); 
      sel.addRange(range); 
      sel.execCommand('Copy'); 
     } 

    } 
</script> 
</head> 

<body> 
<table cellpadding="2"> 
<thead> 

    <tr> 
     <th>Valuuta</th> 
     <th>Kurss</th> 
    </tr> 
</thead> 
<tbody id="currencies"> 
<tr><td>USD</td><td>1,4141</td></tr><tr><td>JPY</td><td>118,56</td></tr><tr><td>DKK</td><td>7,4564</td></tr><tr><td>GBP</td><td>0,88150</td></tr><tr><td>NOK</td><td>7,8055</td></tr><tr><td>RUB</td><td>40,1500</td></tr><tr><td>CAD</td><td>1,3686</td></tr></tbody> 

</table> 
<input type="button" value="select table" 
    onclick="selectElementContents(document.getElementById('currencies'));"> 
</body> 
</html> 

回答

0

在大多數瀏覽器是不可能複製到系統剪貼板。要做到這一點,你需要使用黑客。最常見的方法是使用Flash。 ZeroClipboard這樣做,似乎工作得很好。

順便說一句,execCommand()documentTextRange對象,而不是Selection對象的方法,所以sel.execCommand("Copy")不可能工作。

UPDATE

我從來沒有實際使用ZeroClipboard。看過文檔後,它看起來並不像我希望的那樣(似乎沒有辦法複製富文本),甚至比我想象的還要糟糕得多。您可以使用ZeroClipboard以innerHTML的形式將表格內容複製爲文本,但是否可以接受取決於您希望用戶可以對複製的內容執行什麼操作。

+0

OK,我會嘗試這個ZeroClipboard。我試圖解決這個JavaScript沒有任何偉大的知識:) – Marko 2011-04-03 12:54:13

+0

我不明白,我如何選擇zeroclipboard表? – Marko 2011-04-03 13:04:32

+0

@Marko:答覆已更新。 – 2011-04-03 13:28:47

2

這對我的作品在IE8:

var table = document.getElementById('copyHtmlToClipboard'); 
    // Below line is essential !!! 
    table.contentEditable = 'true'; 

    var controlRange = document.body.createControlRange(); 
    controlRange.addElement(table); 
    controlRange.execCommand("Copy"); 
+0

'TypeError:document.body.createControlRange不是一個函數' – vsync 2016-06-23 12:10:03

+0

另外'table.contentEditable ='true';'是無效的。你不能傳遞一個字符串 – vsync 2016-06-23 12:10:45