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进行应用监控与调试

