Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript document.execCommand(';copy';)命令在字符串的开头和结尾添加换行符_Javascript_Html_Dom - Fatal编程技术网

Javascript document.execCommand(';copy';)命令在字符串的开头和结尾添加换行符

Javascript document.execCommand(';copy';)命令在字符串的开头和结尾添加换行符,javascript,html,dom,Javascript,Html,Dom,我编写这个函数是为了将文本复制到剪贴板。它复制内容,但向复制的字符串添加换行符 功能copyToClipboard(文本){ //控制台日志(“文本”,文本); const textarea=document.createElement('textarea'); textarea.textContent=文本; document.body.appendChild(textarea); var selection=document.getSelection(); var range=docume

我编写这个函数是为了将文本复制到剪贴板。它复制内容,但向复制的字符串添加换行符

功能copyToClipboard(文本){
//控制台日志(“文本”,文本);
const textarea=document.createElement('textarea');
textarea.textContent=文本;
document.body.appendChild(textarea);
var selection=document.getSelection();
var range=document.createRange();
范围。选择节点(文本区域);
selection.removeAllRanges();
选择。添加范围(范围);
const success=document.execCommand('copy');
selection.removeAllRanges();
document.body.removeChild(textarea);
回归成功;
log(“现在粘贴到文本区域”);
}
$(“按钮”)。单击(函数(){
copyToClipboard($('#ip').val());
})
textarea{
宽度:100%;
高度:200px;
边框:1px纯灰;
}
输入{
最小宽度:200px;
}

复制

问题在于使用
selectNode

range.selectNode(textarea);
根据文档,
selectNode
将父节点设置为范围开始

selectNode()方法设置包含节点和节点的范围 它的内容。将显示范围开始和结束的父节点 与引用节点的父节点相同

如果无法使用
select()
,请尝试使用

功能copyToClipboard(文本){
const textarea=document.createElement('textarea');
textarea.textContent=文本;
document.body.appendChild(textarea);
textarea.focus();
textarea.setSelectionRange(0,-1);
const success=document.execCommand('copy');
document.body.removeChild(textarea);
回归成功;
}
$(“按钮”)。单击(函数(){
copyToClipboard($('#ip').val());
})
textarea{
宽度:100%;
高度:200px;
边框:1px纯灰;
}
输入{
最小宽度:200px;
}

复制
问题 不是
document.execCommand(“复制”)

将子项追加到父项时,每次都会创建一个新行。删除该新行的一种方法是使用
parent.innerHTML
清除父项的html

第一个代码段只工作一次,以显示在第二个代码段中清除innerHTML的效果

功能copyToClipboard(文本){
const textarea=document.createElement('textarea');
textarea.textContent=文本;
document.getElementById(“xyz”).appendChild(textarea);
var selection=document.getSelection();
selection.removeAllRanges();
var range=document.createRange();
范围。选择节点(文本区域);
选择。添加范围(范围);
const success=document.execCommand('copy');
selection.removeAllRanges();
//document.getElementById(“xyz”).innerHTML=“”;
回归成功;
}
$(“按钮”)。单击(函数(){
copyToClipboard($('#ip').val());
})
textarea{
宽度:100%;
高度:50px;
边框:1px纯灰;
}
输入{
最小宽度:100px;
}

复制

这确实很奇怪。我尝试修剪并删除了textarea标记中的空白。请回答问题。为什么首先创建一个textarea元素-
document.createElement('textarea')
然后删除它-
document.body.removeChild(textarea)?它没有在Firefox83中添加LFs。@sergeykuznetsov,这就是所有示例的内容。execCommand适用于输入类型或textarea,因为我没有元素,所以我需要动态创建一个textarea,并在使用后将其删除。@NIKHILCM,但您不必使用代码创建字段。毕竟,您可以在html中声明它,并且已经在代码中引用了这个字段
document.body.appendChild(textArea);  //this line of code was the issue