我正在做一个选择,在高亮部分我添加了一个空格。当用户选择相同的跨度时,我会对消息进行安慰。
一切都很好。但是,当我选择一个具有空间的现有节点元素(强)时,我将得到一个错误( The Range has partially selected a non-Text node.
)。
如何解决这个问题?
这是我的代码:
var currentTarget = null;
function selHTML() {
var nNd = document.createElement("span");
var w = getSelection().getRangeAt(0);
var text = window.getSelection().toString();
currentTarget = $(w.startContainer).parent();
//console.log(selection.anchorNode.baseURI);//nextElementSibling/anchorNode
if(!$(w.startContainer).parent().prop('class')) {
if($.trim(text).length < 5 ) {
console.log("Your selection is too short..!");
return;
}
try {
w.surroundContents(nNd);
currentTarget.find('span.highlight').contents().unwrap();
$(nNd).addClass('highlight');
} catch (ex) {
console.log("The Range has partially selected a non-Text node.")
}
} else {
console.log("already selected");
}
}
$("#addText").on('click', function(event) {
event.preventDefault();
$(selHTML());
});
$("button").click(function(){
$(selHTML());
});
$("#clearSpan").click(function(){
console.log($(currentTarget))
});
$("div.content").mouseup(function(event) {
var range = window.getSelection().getRangeAt(0);
if (!range.collapsed) {
var bounds = range.getBoundingClientRect();
var x = bounds.left + ((bounds.right - bounds.left - $(".savetooltipAll").outerWidth()) / 2);
var y = bounds.top - $(".savetooltipAll").outerHeight() + $(window).scrollTop();
$(".savetooltipAll").css("top", (y+(bounds.top*3)) + 'px');
$(".savetooltipAll").css("left",x + 'px');
$(".savetooltipAll").show();
} else {
$(".savetooltipAll").hide();
}
});
发布于 2014-12-26 22:55:34
在跨越多个非文本节点时突出显示页面上选定的文本:在跨越多个非文本节点时突出显示页面上选定的文本
https://stackoverflow.com/questions/27664897
复制相似问题