火狐浏览器下
<style>
.edit {
width: 200px;
height: 40px;
border: 1px solid green;
}
.disEdit {
display: inline-block;
width: 50px;
height: 24px;
}
</style>
<div class="edit" contentEditable="true">
<div class="disEdit" contenteditable="false">123</div>
</div>
问题原因: 不可编辑元素无法获取光标,并且不可编辑元素又在最后。
解决办法:如果不可编辑元素在最后,那么在不可编辑元素后面加一个不显示内容的文本节点即可。
<script>
var node = document.getElementsByClassName("disEdit")[0]; //总之想办法获取到不可编辑的dom
var parent = node.parentNode;
// 判断不可编辑的元素是不是lastChild
if(parent.children[parent.children.length - 1] === node){
parent.appendChild(document.createTextNode('\u200b')); //获取光标的空白节点
}
</script>
(最后需要获取#text的话,需要处理一下光标占位符,因为"456"看似是3位,实际上"456".length = 4,所以"456".substr(1)即可)
原文:https://zhidao.baidu.com/question/1306988232397936939.html
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。