在网上找了好久,终于解决了这个问题。这里记录一下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试</title>
<!-- 引入jQuery -->
<script type="text/javascript" src="assets/js/jquery-1.12.4.min.js"></script>
<style type="text/css">
#div {
border: 1px solid gray;
width: 800px;
height: 41px;
}
</style>
</head>
<body>
<div id="div" contenteditable="true">点击按钮把图片拼接过来...</div>
<button id="btn" onclick="btnClick()">光标聚焦到最后</button>
<script type="text/javascript">
function btnClick() {
//创建一个图片元素
var img = document.createElement('img');
img.src = '//www.baidu.com/img/baidu_jgylogo3.gif';
//把图片放到div里,并让光标聚焦到内容最后
var div = document.getElementById('div');
div.appendChild(img);
//这里如果使用"div.focus()",则光标总是出现在最前面
focusEnd(div);
}
//将光标聚焦到可编辑div内容末尾(el为DOM对象)
function focusEnd(el){
el.focus();
if($.support.msie) {
var range = document.selection.createRange();
this.last = range;
range.moveToElementText(el);
range.select();
document.selection.empty(); //取消选中
} else {
var range = document.createRange();
range.selectNodeContents(el);
range.collapse(false);
//返回一个Selection对象,表示用户选择的文本范围或光标的当前位置
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}
}
</script>
</body>
</html>
参考链接:http://www.cnblogs.com/jonie-wong/p/5519822.html