每次使用window.getSelection()时位置都会改变
Position changes every time with window.getSelection()
有人能帮帮我吗?这里有这些代码https://stackoverflow.com/a/17836828/2338164
$(document).on("mouseup",".wrap",function(){
var highlight = window.getSelection();
if(highlight.toString().length>=1){
var spn = '<span class="highlight">' + highlight + '</span>';
var text = $(this).text();
var range = highlight.getRangeAt(0);
var startText = text.substring(0, range.startOffset);
var endText = text.substring(range.endOffset, text.length);
$('#q3txt').append(range.startOffset+"<br>");
$(this).html(startText + spn + endText);
}
});
我试着使用它,它工作得很好,直到你再次突出显示…
链接http://jsfiddle.net/AN76g/.
我想做的是……用户将突出显示一个块,然后在span中换行,但如果用户犯了一个错误,并试图再次突出显示,span将被删除,并将尝试换行新的突出显示的文本。但是位置改变或者部分文本被追加。
查看此更新:jsfiddle.
首先,按下鼠标,你可以像这样展开span:
$(document).on("mousedown",".wrap",function(){
$('.highlight').contents().unwrap();
});
其次,使用范围的问题。startOffset和range。endOffset表示开始部分相对于包含元素,该元素可能是突出显示跨度,导致您在后续选择中替换不正确的文本。相反,用span替换选择,如下所示:
$(document).on("mouseup",".wrap",function(){
var highlight = window.getSelection();
if(highlight.toString().length>=1){
var range = highlight.getRangeAt(0);
var selectionContents = range.extractContents();
var spn = document.createElement("span");
spn.className='highlight';
spn.appendChild(selectionContents);
range.insertNode(spn);
highlight.removeAllRanges();
}
});
来自MDN范围的信息。startOffset,特别是:
startContainer是Text、Comment或CDATASection类型的Node,那么偏移量是从startContainer的开始到范围的边界点的字符数。对于其他Node类型,startOffset是startContainer的起始点和Range的边界点之间的子节点数。
相关文章:
- 来自plugin.google.maps(不是com.google.maps)的标记不会改变其位置
- Javascript改变位置赢得'不适用于Chrome或IE
- CSS在IMG周围添加一个胖“框架”,而不改变IMG的位置
- 为什么此脚本的位置会改变网页的行为
- 最大宽度正在改变位置:固定边距
- 可以't使用“t”改变网页的位置;window.oneforeunload”;
- 在改变阵列位置和以角度动态显示内容时遇到问题
- 当javascript改变两个标签的宽度时,它们会自动改变位置
- Bootstrap popover以分辨率改变位置
- 改变“;x〃;在背景位置:“;x〃;px”;y”;px为类使用jQuery/Javascript
- 如何将场景中的对象添加到网格中而不改变其在three.js中的位置
- JavaScript:检测窗口开始改变位置的时刻
- 当元素从DOM中移除时,过渡位置改变
- Onunload和onbeforeunload不会在位置改变时触发
- 用鼠标位置改变不透明度
- 导航链接在滚动位置改变(单页站点)
- 加载事件和帧位置改变
- 按钮's的位置改变时,另一个按钮显示
- 位置改变动画
- 父和子DIV's不嵌套的位置改变jquery javascript问题