問題描述
微信(windows)版本:v2.9.0
windows環境下,使用 copy-to-clipboard 實現 複製到剪貼板,粘貼進微信(windows),換行符失效。
原因
閱讀 copy-to-clipboard,clipboard-copy 等 package 源碼,發現實現方式是把數據放進 span 的 textContent,但是數據被 span 標籤格式化,數據前後發生了改變,導致換行符失效。
也有實現方式是把數據放進 input 的 value,同樣數據前後發生了改變,換行符失效。
ps:把複製前後的數據打印進控制檯,看起來沒有區別,因爲控制檯對數據進行了轉碼,如何證明不一樣,待研究。(在瀏覽器的控制檯,txt文件,複製到 textarea 轉爲 charCode 均顯示一致。)
解決方案
textarea 天然支持 換行符,使用 textarea 代替 span 或 input。
function copyToClipboard(txt) {
var textarea = document.createElement("textarea");
textarea.value = txt;
document.body.appendChild(textarea);
textarea.select();
document.execCommand("copy");
document.body.removeChild(textarea);
}