9

尝试将此脚本复制到剪贴板而不是返回页面。当您单击链接时,它应该复制到剪贴板。至少这是我的意图。以下是其背后的一些背景事实:

  • 这适用于专门使用 IE 的公司 Intranet 站点,因此它不需要与任何其他浏览器兼容
  • 里面的数据是/将是从数据库查询返回
  • 我意识到这是旧技术,但现在需要这样。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
            <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript"><!--
    // input field descriptions
    var desc = new Array();
            desc['a1'] = 'First name';
    desc['a2'] = 'Last name';
    desc['a3'] = 'Address';
    desc['a4'] = 'Zip';
    desc['a5'] = 'City';
    desc['a6'] = 'Country';
    
    function CopyFields(){
        var copytext = '';
        for(var i = 0; i < arguments.length; i++){
            copytext += desc[arguments[i]] + ': ' + document.getElementById(arguments[i]).innerText + '\n';}
        var tempstore = document.getElementById(arguments[0]).innerText;
                document.getElementById(arguments[0]).innerText = copytext;
        document.getElementById(arguments[0]).focus();
        document.getElementById(arguments[0]).select();
        document.execCommand('Copy');
        document.getElementById(arguments[0]).innerText = tempstore;
    }
    </script>
    </head>
    <body>
    
    <table>
    <tr>
    <td id="a1" name="t1">a</td>
    <td id="a2" name="t2">b</td>
    <td id="a3" name="t3">c</td>
    <td id="a4" name="t4">d</td>
    <td id="a5" name="t5">e</td>
    <td id="a6" name="t6">f</td>
    </tr>
    </table><br>
    <a href="#" onClick="CopyFields('a1', 'a2', 'a3', 'a4', 'a5', 'a6');">Copy values of text fields to clipboard</a>
    </body> 
    
    </html>
    
4

1 回答 1

18

-elements没有select()-method td

您可以不使用复制命令直接访问剪贴板:

window.clipboardData.setData('Text', copytext);
于 2013-04-11T21:03:09.677 回答