javascript 如何获取光标选取的值并替换?

问题:如何实现类似富文本编辑器的文本选中并替换值得功能?

 var word = window.getSelection?window.getSelection():document.selection.createRange();
 alert(word); 

使用以上api可以实现获取选取的值,但是如何得到选取的值具体位置并且替换呢?

阅读 3.5k
2 个回答
window.getSelection().baseNode.data='改变的内容'

有个选择内容加版权声明的常见效果。。。感觉和你这个需求类似。。。

$('body').on('copy', function (e) {

  if (typeof window.getSelection == 'undefined') {

    return;
  }

  var body_element = document.body,
      selection = window.getSelection();

  if (('' + selection).length < 30) {

    return;
  }

  var newdiv = document.createElement('div');

  newdiv.style.position = 'absolute';

  newdiv.style.left = '-99999px';

  body_element.appendChild(newdiv);

  newdiv.appendChild(selection.getRangeAt(0).cloneContents());

  if (selection.getRangeAt(0).commonAncestorContainer.nodeName == 'PRE') {

    newdiv.innerHTML = '<pre>' + newdiv.innerHTML + '</pre>';
  };

  newdiv.innerHTML += '<br />著作权归作者所有。<br />商业转载请联系作者获得授权,非商业转载请注明出处。<br />原文: <a href="' + location.href + '">' + location.href + '</a> © abcde.com';

  selection.selectAllChildren(newdiv);

  window.setTimeout(function () {

    body_element.removeChild(newdiv);
  }, 200);
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题