Javascript 如何在复制到剪贴板的文本区域中添加新行?
这是我的“复制到剪贴板”代码,我使用的是textarea,但当我将复制的内容粘贴到代码上时,所有内容都在一行上:Javascript 如何在复制到剪贴板的文本区域中添加新行?,javascript,reactjs,Javascript,Reactjs,这是我的“复制到剪贴板”代码,我使用的是textarea,但当我将复制的内容粘贴到代码上时,所有内容都在一行上: const CopyButton = ({ text }: { text: string }) => { const init_val = 'Copy'; const [btn_val, set_value] = useState(init_val); const copyToClipboard = () => { const textField =
const CopyButton = ({ text }: { text: string }) => {
const init_val = 'Copy';
const [btn_val, set_value] = useState(init_val);
const copyToClipboard = () => {
const textField = document.createElement('textarea');
textField.innerText = text;
document.body.appendChild(textField);
textField.select();
document.execCommand('copy');
textField.remove();
set_value('Copied!');
setTimeout(() => {
set_value(init_val);
}, 1500);
};
return (
<button className='copy-to-clipboard' onClick={copyToClipboard}>
{btn_val}
</button>
);
};
我正在考虑用regexp解决这个问题,但不知道如何解决,似乎也找不到解决办法。正如您在我的代码中看到的,我正在使用innerText,我在周围搜索并尝试使用textContent,结果成功了,只需在我的代码中将innerText替换为textContent:
textField.textContent = text;
您需要使用或,textField.innerText将删除某些字符,例如新行
请小心使用innerHTML,因为这将允许复制功能的用户在您的站点中插入自己的HTML,这可能会导致跨站点脚本XSS问题 您必须使用空白:pre,因为HTML会删除空白。您可以尝试以下代码:
const CopyButton = ({ text }: { text: string }) => {
const init_val = 'Copy';
const [btn_val, set_value] = React.useState(init_val);
const copyToClipboard = () => {
const textField = document.createElement('textarea');
var newParagraph = document.createElement('p');
var newContent = document.createTextNode("Samson's SR500 headphones offer exceptional sonic \nclarity and comfort in a durable, lightweight design \nperfect for studio and movile applications.");
newParagraph.appendChild(newContent)
document.body.appendChild(newParagraph);
document.body.style ="white-space: pre";
textField.select();
document.execCommand('copy');
textField.remove();
set_value('Copied!');
setTimeout(() => {
set_value(init_val);
}, 1500);
};
return (
<div>
<button className='copy-to-clipboard' onClick={copyToClipboard}>
{btn_val}
</button>
</div>
);
};
参考资料:
堆栈溢出。从中获取文本时如何保留换行符
文本区?堆栈溢出。
2019年10月31日访问
詹妮弗·麦登。在JavaScript字符串中创建换行符。2019年10月31日访问
moz://a. Document.createElement。MDN web文档moz://a. 2019年10月31日访问
@我很高兴选择这个作为最佳答案。