正确的方法是正确运用Selection对象和Range对象,实现在光标当前位置插入文本或结点。但是这两个对象在IE和标准的DOM方式的运用方法是不同的。

思路:首先获得用户的选区(光标当前位置可理解成起始和终止位置一样的选区)。然后,从Selection对象转成Range对象。目的是利用Range对象的方法插内容进去。最后,插入动作结束后将光标移到插入内容的后面。
var sel = win.document.selection; //IE
var sel = win.getSelection(); //DOM
var range = sel.createRange(); // IE下
var range = sel.getRangeAt(0); // DOM下
if(range.startContainer){ // DOM下
sel.removeAllRanges(); // 删除Selection中的所有Range
range.deleteContents(); // 清除Range中的内容
// 获得Range中的第一个html结点
var container = range.startContainer;
// 获得Range起点的位移
var pos = range.startOffset;
// 建一个空Range
range = document.createRange();
// 插入内容
var cons = win.document.createTextNode(",:),");
if(container.nodeType == 3){// 如是一个TextNode
container.insertData(pos, cons.nodeValue);
// 改变光标位置
range.setEnd(container, pos + cons.nodeValue.length);
range.setStart(container, pos + cons.nodeValue.length);
}else{// 如果是一个HTML Node
var afternode = container.childNodes[pos];
container.insertBefore(cons, afternode);
range.setEnd(cons, cons.nodeValue.length);
range.setStart(cons, cons.nodeValue.length);
}
sel.addRange(range);
}else{// IE下
var cnode = range.parentElement();
while(cnode.tagName.toLowerCase() != “body”){
cnodecnode = cnode.parentNode;
}
if(cnode.id && cnode.id==”rich_txt_editor”){
range.pasteHTML(",:),");
}
}
win.focus();
innerHTML 和 pasteHTML 区别
innerHTML 是一个属性,可以取得或者设定该元素内的 HTML 内容,可以是任意能包含 HTML 子节点的元素都使用它
pasteHTML()是一个方法,在指定的文字区域内替换该区域内的文本或者HTML,该方法必须应用于一个 createTextRange() 或者 document.selection.createRange() 创建的区域上
var oRange = document.selection.createRange();
if(oRange.text!=''){
var oHtml = '<a href="#" rel="external nofollow" target=_blank>oRange.text</a>';
oRange.pasteHTML(oHtml);
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# javascript光标定位
# js
# 光标后面添加节点
# js添加文本节点
# JavaScript自定义文本框光标
# Javascript实现获取及设置光标位置的方法
# js光标定位文本框回车表单提交问题的解决方法
# JS在可编辑的div中的光标位置插入内容的方法
# js实现获取焦点后光标在字符串后
# js获取光标位置和设置文本框光标位置示例代码
# 在页面中js获取光标/鼠标的坐标及光标的像素坐标
# js切换光标示例代码
# js/html光标定位的实现代码
# javascript textarea光标定位方法(兼容IE和FF)
# 是一个
# 第一个
# 这两个
# 应用于
# 后将
# 移到
# 转成
# 目的是
# 使用它
# container
# pos
# deleteContents
# removeAllRanges
# html
# startContainer
# startOffset
# insertData
# nodeValue
# setEnd
# TextNode
相关文章:
用v-html解决Vue.js渲染中html标签不被解析的问题
南京网站制作费用,南京远驱官方网站?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
小型网站制作HTML,*游戏网站怎么搭建?
如何在万网开始建站?分步指南解析
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
山东云建站价格为何差异显著?
如何彻底删除建站之星生成的Banner?
网页设计网站制作软件,microsoft office哪个可以创建网页?
建站之星免费模板:自助建站系统与智能响应式一键生成
大连网站制作公司哪家好一点,大连买房网站哪个好?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
已有域名能否直接搭建网站?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
建站之星多图banner生成与模板自定义指南
如何快速生成凡客建站的专业级图册?
如何选择PHP开源工具快速搭建网站?
学校为何禁止电信移动建设网站?
南宁网站建设制作定制,南宁网站建设可以定制吗?
Android自定义listview布局实现上拉加载下拉刷新功能
如何用已有域名快速搭建网站?
音响网站制作视频教程,隆霸音响官方网站?
如何用腾讯建站主机快速创建免费网站?
如何做静态网页,sublimetext3.0制作静态网页?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
济南企业网站制作公司,济南社保单位网上缴费步骤?
如何快速生成橙子建站落地页链接?
宝塔面板创建网站无法访问?如何快速排查修复?
北京专业网站制作设计师招聘,北京白云观官方网站?
定制建站流程步骤详解:一站式方案设计与开发指南
如何在阿里云服务器自主搭建网站?
如何选择高性价比服务器搭建个人网站?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
宝塔建站助手安装配置与建站模板使用全流程解析
零基础网站服务器架设实战:轻量应用与域名解析配置指南
建站之星代理平台如何选择最佳方案?
如何通过WDCP绑定主域名及创建子域名站点?
如何快速重置建站主机并恢复默认配置?
如何通过山东自助建站平台快速注册域名?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何用wdcp快速搭建高效网站?
建站之星如何优化SEO以实现高效排名?
如何在IIS中配置站点IP、端口及主机头?
如何撰写建站申请书?关键要点有哪些?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
微信小程序 五星评分(包括半颗星评分)实例代码
*请认真填写需求信息,我们会在24小时内与您取得联系。