触发点击事件后,不取消鼠标选中区域

我想用JS来实现基本的富文本编辑功能,给标签加上contenteditable属性,用document.execCommand基本上能满足编辑的需要了,但是触发事件鼠标的选中区域会取消,就不能针对选中的文本进行编辑了,这个问题有办法解决吗?

阅读 7.3k
2 个回答

思路1:
给触发动作的按钮或者元素添加css3样式 user-select:none; 让其不能获取光标。

思路2:
给触发动作的按钮或者元素添加属性 unselectable="on" 让其不能获取光标。

思路3:
如楼上所述的方法~

做编辑器的工具按钮尽量不要使用<a标签,可以使用button或div之类无浏览器行为的标签。

有一种思路:
var sel = getSelection(),var range;
当在编辑区域发生鼠标或者键盘事件后应该保存当前的range:
range = sel.getRangeAt(0);
当想编辑文本时:
sel.removeAllRanges();
sel.addRange(ran);
document.execCommand('type');

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