Javascritp Selection 与 Range

news/2024/7/19 12:55:25 标签: js

在操作文本框或者可编辑元素的时候,我们可能会使用到这两个api。在这里简单记录下区别。

  • Range
  • Selection

Selection 指代的是用户选择的区域。该区域可以是多个,但目前谷歌并不支持选择多个,但Firefox应该是支持的。

Range也是代表一段区域,这个这个区域是很抽象的,他不像Selection那样你看到了选择的具有蓝色背景的区域,那就是Selection。而Range可以通过js去构造并选择,而实际用户看不到任何选择。

下图:selection是可以看到的
在这里插入图片描述
Range既可以是上边选择的区域,也可以通过JS创建。

const someRange = document.createRange();

// 假设有这样一段div
<div id="text-node">hello world</div>

const textNode = document.getElementById('text-node').childNodes[0] 

someRange.setStart(textNode, 0);
someRange.setEnd(textNode, 4);

console.log(someRange.toString()) // hell

从API的角度

const selection = window.getSelection(); // 返回Selection对象

const range = selection.getRangeAt(0) // 获取到Selection对象下第一个Range。事实上只能有一个。firefox允许选择多个

更多可以参考

https://developer.mozilla.org/zh-CN/docs/Web/API/Range

https://developer.mozilla.org/zh-CN/docs/Web/API/Selection


http://www.niftyadmin.cn/n/1382528.html

相关文章

Scrum立会报告+燃尽图(十月十八日总第九次):功能细化与数据库设计

此作业要求参见&#xff1a;https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址&#xff1a;https://git.coding.net/zhangjy982/QuJianBang.git Scrum立会master&#xff1a;张俊余 一、小组介绍 组长&#xff1a;付佳 组员&#xff1a;张俊余 李文涛 孙赛…

[译] TensorFlow 教程 #06 - CIFAR-10

题图来自&#xff1a;github本文主要演示了在CIFAR-10数据集上进行图像识别。其中有大段之前教程的文字及代码&#xff0c;如果看过的朋友可以快速翻阅。 01 - 简单线性模型 | 02 - 卷积神经网络 | 03 - PrettyTensor | 04 - 保存& 恢复05 - 集成学习 by Magnus Erik Hvas…

Typescript error “Cannot write file xxx because it would overwrite input file

出现这个问题基本是因为开启了allowJs。 因为allowJs即允许Typescript编译器去编译js。而编译之后的输出文件也就是xxx.js与源文件是一样的。 所以就会报出“会覆盖输入文件”这样的错误。 事实上&#xff0c;我们日常开发使用第三方打包工具比如webpack。编译输出是由ts-lo…

LOGO闪光效果

原地址&#xff1a;http://cl314413.blog.163.com/blog/static/1905079762014122105235138/ 这个效果在很多LOGO及广告宣传中都会用到。商业开发的做法应该是拿一张闪光的图&#xff0c;对其做uv移动&#xff0c;然后和原图两张图混合&#xff0c;这样运算会小很多&#xff0c;…

优酷、腾讯、咪咕争相布局,体育综艺为何备受青睐?

2018年是名副其实的体育大年&#xff0c;从年初的平昌冬奥会&#xff0c;到6月中旬的俄罗斯世界杯&#xff0c;再到刚刚结束的雅加达亚运会&#xff0c;三项顶级赛事都为体育迷们带来了无与伦比的狂欢盛宴&#xff0c;体育无疑是今年最火热的话题。借着这些体育赛事带来的热度&…

rhel7.2 yum

redhat 的更新包只对注册的用户生效&#xff0c;所以我们自己手动更改成CentOS 的更新包&#xff0c;CentOS几乎和redhat是一样的&#xff0c;所以无需担心软件包是否可安装&#xff0c;安装之后是否有问题。 &#xff08;前提是wget包已安装&#xff09; 1、首先删除redhat原…

React return返回值要不要加括号的问题以及扩展

在react组件中返回JSX时&#xff0c;我们一般会这样写&#xff1a; function Square(props) {return (<button className"square" onClick{props.onClick}>{props.value}</button>); }如果JSX标签仅有一行&#xff0c;也可以省略括号。像这样 function…

springmvc详细讲解--从浅及深(一)

这两天在论坛中经常看到有朋友提出关于springmvc的一些问题&#xff0c;我去年的时候也是如此&#xff0c;那会刚毕业&#xff0c;很多东西都一知半解的&#xff0c;加上上一个公司不能上网&#xff0c;所以很多问题都困扰着我。 spring框架就是其中的一个&#xff0c;说起spri…