getSelection限制选取范围

2024-06-23 00:28

本文主要是介绍getSelection限制选取范围,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

// 选择容器元素
const box = document.queryselector('.box');// 监听选择事件
document.addEventListener('mouseup', (e) => {// 如果选择不在box内部,清除选择if (!box.contains(e.target)) {window.getSelection().removeAllRanges();}
});// 监听键盘事件,以防用户使用键盘进行选择
document.addEventListener('keyup', (e) => {// 检查是否有文本被选中const selection = window.getSelection();if (!box.contains(selection.anchorNode)) {selection.removeAllRanges();}
});

在自己手写富文本编辑器时通常会用到这一点

//通过vue3绑定编辑器dom
const editorRef = ref()//选中的文本
const text = ref('')
//选择器
const selection = ref({})
//位置信息
const range = ref(null)
//选中的文本所在节点
const node = ref(null)
const getContext = ()=>{selection.value = window.getSelection()if(selection.value.isCollapsed) returnif(selection.value.rangeCount <= 0) returntext.value = selection.value.toString()range.value = selection.value.getRangeAt(0)//父节点const element = range.value.commonAncestorContainer;/*过滤不是元素节点情况contains用于判断某个dom节点是否为另一个节点的子元素。用法示例:parentNode.contains(childNode)当前语句意为:当选中内容为dom且处于编辑器区域中时,获取被选中的文本所在的dom节点,并将之存入变量,如果不是dom节点那么将它的父元素存入变量。如果选中的内容超出了编辑器区域直接存入null,这样就可以起到限制getSelection()作用范围的效果。有兴趣的可以看看我写的简易版富文本编辑器,目前正在编码中后续测试无BUG后会贴出地址。*/if (element.nodeType === Node.ELEMENT_NODE && editorRef.value.contains(element)) {node.value = element} else if(editorRef.value.contains(element.parentElement)){node.value = element.parentElement}else{node.value = null}}

这篇关于getSelection限制选取范围的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085822

相关文章

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数,为农业生产提供科学依据。交通气象站:用于公路、铁路、机场等交通场所的气象监测,提供实时气象数据以支持交通运营和调度。林业气象站:监测林区风速、湿度、温度等气象要素,为林区保护和

Android MVVM框架搭建(七)Permission、AlertDialog、拍照和相册选取

} return dialog; } public AlertDialog show() { final AlertDialog dialog = create(); dialog.show(); return dialog; } } } ④ 样式 在设置弹窗的样式和弹窗出现的方式,在themes.xml下新增如下代码: 这里还用到动画样式文件,在res文件夹下新建一个ani

c语言移位运算超出类型所能表示的范围告警

错误代码: *(unsigned int *)GPIOC_CRH &= ~(0xf << 28); 告警内容: integer operation result is out of range 分析:  integer operation result is out of range是因为在尝试对一个32位整型执行移位操作时超出了该类型所能表示的范围。在C语言中,整型字面量(如0xf

图像分割(四)---(图像显示、灰度直方图和三维灰度图综合分析选取最佳分割方法)

一、引言        对彩色图像进行分割的一种常用方法,是先把彩色图像转灰度图像,然后再选择合适的阈值进行二值分割。但有时彩色图像转灰度图像后不具有典型的双峰特性,二值分割效果不好。本文章提出一种确定彩色图像分割方法的新思路。首先读入一幅彩色图像fruit.jpg,然后对其各通道的灰度直方图进行分析,并使用imtool进行分析,利用surf绘制R-B的三维灰度图(水果的灰度值明显在背景上方,为

zabbix触发器和监控项设置监控时间范围

触发器配置监控时间范围 比如现在配置在晚上十二点到凌晨一点半的时候触发。 创建一个触发器,选中一个你要是用的监控项比如我这里的监控项X,点击表达式构造器。 打开表达式构造器后,点击编辑,再次选择监控项X,在功能出选择当前时间小于N,然后N值出输入时间013000即可,01300表示凌晨一点半,152700表示下午三点27 选中确定之后,可以选择与或关系,这里我选择‘和’关系,关闭表

【办公技巧】如何编辑带有限制编辑密码的PDF文件?

PDF文件打开之后发现设置了限制编辑,功能栏中的编辑按钮都是灰色的,导致PDF文件里的内容无法编辑。那么带有限制编辑的PDF文件,如何编辑?今天分享两个方法。 方法一: 我们可以将PDF文件转换成其他格式,有些PDF转换器,即使PDF文件设置了限制编辑,也可以正常的转换文件格式。所以我们将PDF文件转换成word文档或者txt等格式文件。然后我们将文件内容复制,在新的PDF文件中,将内容粘贴再

与码无关:分数限制下,选好专业还是选好学校?

本文的目标读者:24届的高考生和家长。 写这篇非技术性文章,是因为我看到了24届考生和21年的我同样迷茫。 事先声明,本文带有强烈的个人思考色彩,可能会引起不适,如有不同观点,欢迎在评论区讨论。 一、前言 很快,24届高考生就要面对志愿填报的难题。俗话说得好,“3分考,7分报”,报志愿在个人发展中是一个很重要的命题。 我认为,报志愿要考虑的方向,主要有: 学校层级【985、211、本科、专科

限制物料仅适用于某些子库存

限制物料仅适用于某些子库存 今天在读UG时,发现一句话: 意思是如何物料被限制到某些子库存时,子库存转移在转移物料时,只能选择这些子库存。如何实现呢?通过查找资料找到实现方式如下: 1、在组织层,物料设置限制子库存: 2、设置子库存->物料/子库存,录入该物料。 3、此时此物料只可以在001子库存中处理。例如,账户别名接收。 官方提供了相应说明: 你可以分配物料到

使用OneWorld创建分公司出错,提示Subsidiary数量超出限制

在公司OneWorld账号中创建了一个美国公司,但是报错了。 一般来说一个OneWorld账号中可以创建125个subsidiary(包含Parent Company),这里还没有超出限制呢。 后来了解到一个OneWorld只能创建一个国家的Subsidiary。如果要创建其它国家或地区的Subsidiary,需要购买相应国家的OneWorld版本。 可以从系统中的Bill Informatio

路由器的Wi-Fi性能是否限制了你的网速?这里有你想要的答案

​你的无线网络速度阻碍了你吗?信不信由你,升级到超快的互联网计划可能不值得。以下是如何判断路由器的Wi-Fi速度是否阻碍了你,以及你能做些什么。 如何测试你的Wi-Fi速度 比较你的有线速度和无线速度可以表明你的路由器是否阻碍了你。虽然很多人认为“Wi-Fi”和“互联网”是一回事,但有明显的区别。 你的网速取决于你与更广泛网络的连接,通常是通过连接到你家的电线通过传统的电信基础设施。你也可以