Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选择表格并将其复制到剪贴板_Javascript_Html_Html Table_Copy_Paste - Fatal编程技术网

Javascript 选择表格并将其复制到剪贴板

Javascript 选择表格并将其复制到剪贴板,javascript,html,html-table,copy,paste,Javascript,Html,Html Table,Copy,Paste,我想选择不带标题的表,它可以工作,但我无法将其复制到剪贴板 页面如下: 代码如下: <!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>

我想选择不带标题的表,它可以工作,但我无法将其复制到剪贴板

页面如下:

代码如下:

<!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>

欧洲央行库希德·塞苏加:2011-04-01
桌子
{
边界塌陷:塌陷;
}
表,td,th
{
边框:1px纯黑;
}
功能选择元素内容(el){
var body=document.body,范围,sel;
if(body.createTextRange){
range=body.createTextRange();
范围。移动到元素文本(el);
range.select();
range.execCommand('Copy');
}else if(document.createRange&&window.getSelection){
range=document.createRange();
范围。选择节点内容(el);
sel=window.getSelection();
选择removeAllRanges();
选择添加范围(范围);
sel.execCommand('Copy');
}
}
瓦卢塔
库尔斯
14141美元11856丹麦克朗74564GBP088150挪威克朗78055卢比401500CAD13686

在大多数浏览器中,无法复制到系统剪贴板。要做到这一点,你需要使用黑客。最常用的方法是使用Flash。这样做,似乎工作得很好

顺便说一下,
execCommand()
document
TextRange
对象的一种方法,而不是
Selection
对象,因此
sel.execCommand(“复制”)
不可能工作

更新


我从来没有真正使用过零剪贴板。看过文档后,它看起来不像我所希望的那样(似乎没有办法复制富文本),甚至比我想象的更可怕。您可以使用ZeroClipboard通过
innerHTML
将表格内容复制为文本,但这是否可以接受取决于您希望用户如何处理复制的内容。

这在IE8上对我有效:

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

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

好的,我试试这个。我试图在不太了解javascript的情况下解决此javascript:)我不明白,我如何使用zeroclipboard选择表格?
TypeError:document.body.createControlRange不是函数
table.contentEditable='true'无效。不能传递字符串