2016-12-28 158 views
0

我需要將文本複製到用戶剪貼板。但由於某種原因,這個簡單的代碼段不起作用(打印錯誤)Javascript複製剪貼板

<html> 
<head> 
</head> 
<body> 
<textarea id="clip">Test</textarea> 
<script> 

    var ta = document.getElementById('clip'); 
    ta.focus(); 
    ta.select(); 

    setTimeout(function() { 
     console.log(document.execCommand('copy')); 
    }, 1000); 

</script> 
</body> 
</html> 

有什麼我做錯了嗎? 任何想法?

+1

可能重複[如何在JavaScript中複製到剪貼板?](http://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript) –

回答

0

是的,你是對的。 這是工作

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
<textarea id="clip" style="position: absolute; left: 100px; top: -100px;">Test</textarea> 
<button id="copyButton">Copy To Clipboard</button> 
<script> 

    document.getElementById('copyButton').addEventListener('click', function() { 

     var ta = document.getElementById('clip'); 

     ta.innerHTML = "Test2"; 

     ta.focus(); 
     ta.select(); 

     console.log(document.execCommand('copy')); 

    }); 

</script> 
</body> 
</html> 
0

..或簡單:

<html> 
<head> 
</head> 
<body> 
<textarea id="clip" onclick="copyToClp()">Test</textarea><!-- this executes copyToClp() function on user's click --> 
<script> 

var ta = document.getElementById('clip'); 
ta.focus(); 
ta.select(); 

function copyToClp(){ 
    console.log(document.execCommand('copy')); 
} 

</script> 
</body> 
</html> 
0

其實,你應該使用Document.execCommand()(像你一樣)和(很爽)的JavaScript Selection API

選擇API允許您以編程方式從頁面上的任何HTML元素進行文本選擇,它的作用與您的鍵盤上按下CTRL + C完全相同。有用的一鍵快速獲取URL,長文本,SSH密鑰。

你可以嘗試這樣的事情:

var button = document.getElementById("yourButtonId"); 
var content = document.getElementById("yourContentElement"); 

button.addEventListener("click", function() { 
    // Define range and selection. 
    var range = document.createRange(); 
    var selection = window.getSelection(); 

    // Clear selection from any previous data. 
    selection.removeAllRanges(); 

    range.selectNodeContents(content); 
    selection.addRange(range); 

    // Copy to clipboard. 
    document.execCommand('copy'); 
}, false); 

編輯:其一這種方法的優點是,你可以在剪貼板操作內容,它已經被複制(逃逸代碼,格式化數字或日期後,大寫,小寫,更改HTML標籤等)。