JavaScript中在光标处插入添加文本标签节点的详细方法

发布时间 - 2026-01-11 00:18:55    点击率:

正确的方法是正确运用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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何使用Sanctum进行API认证?(SPA实战)  javascript中闭包概念与用法深入理解  如何在IIS中新建站点并配置端口与物理路径?  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  在线制作视频网站免费,都有哪些好的动漫网站?  Python数据仓库与ETL构建实战_Airflow调度流程详解  香港服务器网站卡顿?如何解决网络延迟与负载问题?  原生JS获取元素集合的子元素宽度实例  如何在Windows虚拟主机上快速搭建网站?  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  在centOS 7安装mysql 5.7的详细教程  如何在云虚拟主机上快速搭建个人网站?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  浅析上传头像示例及其注意事项  Laravel distinct去重查询_Laravel Eloquent去重方法  Python正则表达式进阶教程_复杂匹配与分组替换解析  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  如何在腾讯云免费申请建站?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何用好域名打造高点击率的自主建站?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  网站图片在线制作软件,怎么在图片上做链接?  什么是javascript作用域_全局和局部作用域有什么区别?  如何登录建站主机?访问步骤全解析  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel如何发送系统通知?(Notification渠道示例)  实例解析Array和String方法  微信推文制作网站有哪些,怎么做微信推文,急?  香港服务器部署网站为何提示未备案?  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  高防服务器租用指南:配置选择与快速部署攻略  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何解决hover在ie6中的兼容性问题  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel怎么为数据库表字段添加索引以优化查询  如何在万网ECS上快速搭建专属网站?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  微信小程序制作网站有哪些,微信小程序需要做网站吗?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  WEB开发之注册页面验证码倒计时代码的实现  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试