Javascript 将插入符号移动到使用surroundContents创建的范围之外
如果在任何commonAncestorContainer父节点(使用“包裹”按钮创建的范围)之外折叠,我将尝试移动选择,但到目前为止我没有运气。代码如下: javascriptJavascript 将插入符号移动到使用surroundContents创建的范围之外,javascript,html,Javascript,Html,如果在任何commonAncestorContainer父节点(使用“包裹”按钮创建的范围)之外折叠,我将尝试移动选择,但到目前为止我没有运气。代码如下: javascript function wrapSelection(){ var selection = window.getSelection(); var span = document.createElement("span"); span.style.fontWeight = "bold&qu
function wrapSelection(){
var selection = window.getSelection();
var span = document.createElement("span");
span.style.fontWeight = "bold";
if(selection.rangeCount){
var range = selection.getRangeAt(0).cloneRange();
if(!range.collapsed){
range.surroundContents(span);
}else{
var newRange = document.createRange();
newRange.setStartAfter(range.commonAncestorContainer.parentNode);
selection.addRange(newRange);
}
}
}
html
代码笔:
如果选择被折叠,这将使选择位于parentNode容器内。。有人能帮我把选择带到parentNode容器之后吗?最终结果将是在包装文本并再次单击包装按钮后,输入的文本将不会被包装,因为选择超出范围/在范围之后。提前非常感谢 找到了答案:
function placeCaretAfterNode(node){
if(typeof window.getSelection != "undefined"){
var range = document.createRange();
range.setStartAfter(node);
range.collapse(true);
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
}
}
function styleSelection(event){
var selection = window.getSelection();
var span = document.createElement("span");
span.style.fontWeight = "bold";
if(selection.rangeCount){
var range = selection.getRangeAt(0).cloneRange();
if(!range.collapsed){
range.surroundContents(span);
}else{
placeCaretAfterNode(range.commonAncestorContainer.parentNode);
}
}
}
function placeCaretAfterNode(node){
if(typeof window.getSelection != "undefined"){
var range = document.createRange();
range.setStartAfter(node);
range.collapse(true);
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
}
}
function styleSelection(event){
var selection = window.getSelection();
var span = document.createElement("span");
span.style.fontWeight = "bold";
if(selection.rangeCount){
var range = selection.getRangeAt(0).cloneRange();
if(!range.collapsed){
range.surroundContents(span);
}else{
placeCaretAfterNode(range.commonAncestorContainer.parentNode);
}
}
}