var $temp = $("<input>");
$("body").append($temp);
$temp.val('123').select();
document.execCommand("copy");
$temp.remove();


此代码有什么问题?应该是对的

对我根本不起作用。

我在这里读了很多线程,这似乎对其他人有用。

我不知道为什么这对我不起作用。在控制台中,我什么也没有。

最佳答案

阅读this question的答案:


  所有document.execCommand('copy')调用必须直接作为用户操作的结果发生,例如单击事件处理程序。这是一种防止在用户不期望的时候弄乱用户剪贴板的措施。


这个例子:



function copyToClipBoard(txt) {
    try {
        var $temp = $("<input>");
        $("body").append($temp);
        $temp.val(txt).select();
        var retVal = document.execCommand("copy");
        console.log('Copy to clipboard returns: ' + retVal);
        $temp.remove();
    } catch (err) {
        console.log('Error while copying to clipboard: ' + err);
    }
}

$('button').on('click', function (e) {
    copyToClipBoard('123');
});


copyToClipBoard('123');

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div style="display:inline-block;">
    <button style="vertical-align:top;">Copy To ClipBoard</button>
    <textarea class="js-test-textarea" cols="35" rows="4">Try pasting into here to see what you have on your clipboard:
  </textarea>
</div>

关于javascript - 复制到剪贴板不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44988947/

10-14 15:13