选择并将表复制到剪贴板

时间:2011-04-03 12:40:50

标签: javascript html html-table copy paste

我想选择没有标题的表格,它可以正常工作,但我无法理解,它会复制到剪贴板。

以下是页面: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>

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

在大多数浏览器中,无法复制到系统剪贴板。要做到这一点,你需要使用黑客。最常见的方法是使用Flash。 ZeroClipboard这样做并且看起来效果很好。

顺便说一下,execCommand()documentTextRange个对象的方法,而不是Selection个对象,因此sel.execCommand("Copy")无法工作。< / p>

<强>更新

我从未真正使用过ZeroClipboard。看过这些文档之后,它看起来并不像我希望的那样(似乎没有办法复制富文本),甚至比我想象的还要糟糕。您可以使用ZeroClipboard通过innerHTML将表格的内容复制为文本,但这是否可接受取决于您希望用户可以对复制的内容执行的操作。