Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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 将插入符号移动到使用surroundContents创建的范围之外_Javascript_Html - Fatal编程技术网

Javascript 将插入符号移动到使用surroundContents创建的范围之外

Javascript 将插入符号移动到使用surroundContents创建的范围之外,javascript,html,Javascript,Html,如果在任何commonAncestorContainer父节点(使用“包裹”按钮创建的范围)之外折叠,我将尝试移动选择,但到目前为止我没有运气。代码如下: javascript function wrapSelection(){ var selection = window.getSelection(); var span = document.createElement("span"); span.style.fontWeight = "bold&qu

如果在任何commonAncestorContainer父节点(使用“包裹”按钮创建的范围)之外折叠,我将尝试移动选择,但到目前为止我没有运气。代码如下:

javascript

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);
  }
} 
}