选择并复制表格到剪贴板。

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>
2个回答

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");

TypeError: document.body.createControlRange is not a function - vsync
同时 table.contentEditable = 'true'; 是无效的。你不能传递一个字符串。 - vsync

0
在大多数浏览器中,无法复制到系统剪贴板。要做到这一点,您需要使用一个技巧。最常见的方法是使用Flash。ZeroClipboard可以实现这一点,并且似乎工作得很好。
顺便说一下,execCommand()documentTextRange对象的方法,而不是Selection对象,因此sel.execCommand("Copy")不可能起作用。 更新 我从未真正使用过ZeroClipboard。看了文档后,它似乎不能做到我所希望的(似乎没有办法复制富文本),而且比我想象的更加令人不快。您可以通过使用ZeroClipboard将表格内容作为文本复制到innerHTML,但是否可以接受取决于您希望用户对复制的内容做什么。

好的,我会尝试使用ZeroClipboard。虽然我对它的javascript并没有太多了解,但我还是试图做出一些变通方法 :) - Marko
我不明白,如何使用 ZeroClipboard 选择表格? - Marko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接