在javascript中从createRange删除内容

在javascript中从createRange删除内容,javascript,html,copy,range,clipboard,Javascript,Html,Copy,Range,Clipboard,长期潜伏者和第一次海报在这里。 我有一个javascript代码,可以从特定的div中选择富文本并将其复制到剪贴板。 它工作得很好,但有一个额外的断线,我想消除 我的代码的相关部分: var textToSelect = document.getElementById('answerText'); range = document.createRange(); range.selectNode(textToSelect[0]); window.getSelection().addRange(ra

长期潜伏者和第一次海报在这里。 我有一个javascript代码,可以从特定的div中选择富文本并将其复制到剪贴板。 它工作得很好,但有一个额外的断线,我想消除

我的代码的相关部分:

var textToSelect = document.getElementById('answerText');
range = document.createRange();
range.selectNode(textToSelect[0]);
window.getSelection().addRange(range);
document.execCommand("copy");
alert(range);
在div answerText中,我的文本是:

答案文本

文本前后没有空格或换行符。代码的结果如下所示

然后,这个额外的换行符也会复制到剪贴板。
如何从选择中删除额外的换行符?我还希望检查从我的范围中删除的内容是否确实是换行符,以确保使用安全。

尝试切换到selectNodeContents()而不是selectNode()-so range.selectNodeContents(textToSelect[0])

当单击颜色块时,我在尝试编写一些脚本来复制十六进制颜色时遇到了相同的问题

下面是一段代码片段(删除内容,您将看到额外的一行-至少在chrome中):

$(函数(){
//复制目标div的内部html。
//事件按钮
var copyBtn=$('.copy btn');
copyBtn.on('click',函数(事件){
var$this=$(this);
//查找包含所需文本的元素。
var content=$this.prev('.meta--value');
//创建新的范围对象并将文字设置为边界。
var range=document.createRange();
范围。选择节点内容(内容[0]);
window.getSelection().addRange(范围);
试一试{
//现在我们已经选择了文本,执行copy命令
var successful=document.execCommand('copy');
/*var msg=successful?'successful':'successful';
log('Copy email命令为'+msg')*/
//成功
$(本)。在('')之后;
setTimeout(函数(){
$('.success').addClass('show');
setTimeout(函数(){
$('.success').fadeOut(函数(){
$('.success').remove();
});
}, 1000);
}, 0);
}捕捉(错误){
//log('Oops,无法复制');
}
//清除下一个事件的范围。
getSelection().removeAllRanges();
});
});
@导入url(https://fonts.googleapis.com/css?family=Roboto:300,900 |梅里韦瑟);
* {
框大小:边框框;
}
html,
身体{
保证金:0;
填充:0;
背景色:#EFEF;
颜色:#131313;
}
p{
字号:600;
字体大小:20px;
利润率最高:1.5vw;
}
.样本包装{
宽度:90vw;
保证金:0自动;
}
@介质(最大宽度:320px){
.样本包装{
宽度:100%;
保证金:0;
}
}
.样本包装器.样本{
显示:内联块;
垂直对齐:顶部;
利润率:0 3px 10px 0;
宽度:22.5vw;
最大宽度:200px;
背景色:#E2;
盒影:0 1px 0 rgba(19,19,19,0.1);
-webkit转换:框阴影150ms,-webkit转换150ms;
转换:长方体阴影150ms,-webkit转换150ms;
过渡:变换150ms,框阴影150ms;
转换:转换150ms,框阴影150ms,-webkit转换150ms;
}
@介质(最大宽度:320px){
.样本包装器.样本{
显示:块;
宽度:90%;
裕度:0自动1.5vh;
最大宽度:无;
}
}
.样本包装器.样本:悬停{
-webkit转换:比例(1.02);
转换:比例(1.02);
盒影:0px 3px 10px-5px rgba(19,19,19,0.3);
}
.样本包装器.样本--颜色{
保证金:0;
填充:0;
宽度:100%;
高度:5vw;
最大高度:133px;
}
.swatch包装器.swatch--meta{
填料:0.375vw;
字体系列:monospace;
}
@介质(最大宽度:320px){
.swatch包装器.swatch--meta{
填充:.75vh.75vh 1vh;
}
}
.swatch包装器.meta+.meta{
利润率最高:0.375vw;
}
.样本包装器.梅塔:之前{
颜色:#939393;
}
.swatch wrapper.meta--名称:before{
内容:“名称:”;
}
.swatch wrapper.meta--别名:before{
内容:“别名:”;
}
.swatch wrapper.meta--值:before{
内容:“值:”;
}
/**
函数类/无显示内容
*/
.cf:之前,.cf:之后{
内容:'';
显示:表格;
}
.cf:之后{
明确:两者皆有;
}
斯沃琪先生{
位置:相对位置;
-webkit过渡:所有.1s易用性;
过渡:全部1秒轻松;
}
.斯沃琪:悬停{
背景色:#EFEF;
}
.样本:悬停:之后{
底部:0;
}
.样本:悬停。复制btn{
不透明度:.5;
右:0;
}
.复制btn{
位置:绝对位置;
不透明度:0;
光标:指针;
排名:0;
文本对齐:居中;
-webkit过渡:所有.2s轻松;
过渡:所有。2轻松;
右图:-100%;
底部:0;
填充:15px;
背景色:#636363;
颜色:#fff;
文本转换:大写;
字体大小:10px;
字号:600;
边界:无;
大纲:无;
宽度:100%;
}
.复制btn:before{
内容:“;
宽度:10px;
身高:100%;
显示:内联块;
垂直对齐:中间对齐;
背景重复:无重复;
背景位置y:中心;
}
.复制btn:之后{
内容:“点击复制”;
显示:内联块;
垂直对齐:中间对齐;
}
.成功{
位置:绝对位置;
右:0;
光标:指针;
宽度:100%;
排名:0;
字体大小:12px;
文本对齐:居中;
字体风格:普通;
字号:600;
底部:0;
填充:15px;
背景色:#000;
颜色:#fff;
文本转换:大写;
-webkit过渡:所有.1s易用性;
过渡:全部1秒轻松;
字号:600;
-webkit变换:比例(0.1);
变换:比例(0.1);
边界半径:100%;
}
.成功:以前{
内容:“;
宽度:10px;
身高:100%;
显示:内联块;
垂直对齐:中间对齐;
背景重复:无重复;
背景位置y:中心;
}
.成功:之后{
内容:“复制!”;
显示:内联块;
垂直对齐:中间对齐;
}
.成功{
-webkit转换:规模(1);
变换:比例(1);
边界半径:0;
}
.p-成功:悬停{
边框:2px实心#E93937;
}
p-成功:之前{
内容:“复制”;
背景:#E93937;
宽度:92px;
文本对齐:居中;
}