2011-04-03 65 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