selection与range笔记
selection对象代表当前激活选中区,通常是高亮的文本块
创建选中区:
1.拖拽文本
2.脚本创建 cerateRange()
获取selection对象
IE document.selection()
非IE window.getSelection()
eg:
<div>请选中这里的部分文字。</div>
<div>
<input type="button" value="加粗" onclick="select()" />
</div>
<script>
function select() {
var a = window.getSelection();
console.log(typeof a.anchorNode);
}
</script>
输出Selection对象
属性:
anchorNode:包含起点的节点,不存在则为null(注意一段文本就是一个节点!包括p内的文本,a,div等标签内的文本,不包括输入框内的文本!!)
anchorOffset:起点在anchorNode中的偏移量
focusNode:包含结束点的节点,不存在则为null
focusOffset:结束点在focusNode中的偏移量,focusOffset可以比anchorOffset小,只要从后向前选择
isCollapsed:起点和结束点是否重合
rangeCount:selection中range的数目,一般一个,ctrl键配合多个
-------------------------------------------------------------------------------------------------------------------------------------
方法:
1.getRangeAt(index)
从当前selection中获取某一个range对象
2.collapse(parentNode, offset)
将开始和结束点合并到parentNode的offset位置,多用于改变可编辑div的焦点,,,
3.extend(parentNode, offset)
将结束点移动到parentNode的offset位置
4.collapseToStart()
将结束点移动到selection的起点,注意是selection的起点而不是开始点,意味着只会向前不会向后,多用于取消选中状态,多个range时也是如此
5.collapseToEnd()
将开始点移动到selection的结束点
6.selectAllChildren(parentNode)
将parentNode的所有后代变成selection,原有的selection被抛弃,可用于全选
7.addRange(range)
将range添加到selection中,注意chrome中只能有一个range
8.removeRange(range)
从selection中移除range
兼容性:不佳,亲测只有IE可以
9.removeAllRanges()
移除所有的range,多用于取消选择状态
10.toString()
返回selection的纯文本,也就是返回选中区域的文本内容
11.containsNode(aNode,aPartlyContained)
判断一个节点是不是selection的一部分
aNode要判断的节点
aPartlyContained true 只要有一部分属于就返回true false 全部属于才返回true
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
range对象:
属性:
collapsed:此Range对象代表的区域开始点和结束点是否已合并
commonAncestorContainer:此Range对象代表的整体区域位于哪个节点(元素或一段文本)
startContainer:此Range对象的开始点位于哪个节点
startOffset:返回此Range对象代表的区域的起点在startContainer中的位置,返回整数
endContainer:此Range对象的结束点位于哪个节点
endOffset:返回此Range对象代表的区域的结束点在endContainer中的位置
方法:
document.createRange() 创建Range对象
Range初始化
selectNode(node) 选择文档的一部分
将整个node节点的信息,包括node本身填充进Range
selectNodeContents(node)
将整个弄的节点内的信息,不包括node本身,填充进Range
值得注意的是,用脚本创建Range不会像手动一样使选中部分变蓝!
操作Range
deleteContents()
从文档中彻底删除Range区域的内容
extractContants()
从文档中提取Range区域的内容,返回值为提取的内容,可以对返回值进行操作,例如插入页面其他地方
cloneRange()
复制Range区域
detach()
分类该区域
-----------------------------------------------------------------------------------------------------------------------
低版本IE兼容
创建Range (低版本IE只支持文本Range)
document.body.createRange()
初始化
findText(string)
找到第一次出现的给定文本,并将范围移过来环绕文本。如果找到文本返回true,否则返回false.
eg: var a= document.body.createRange();
a.findText("选中此文本");
alert(a.text);
高版本无需此法,不多解释
详情请看:http://www.cnblogs.com/zourong/p/4800922.html
selection与range笔记的更多相关文章
- web dom api中的Selection和Range
如果你做过wysiwyg这样的app,一个很让人头疼的问题是如何保证执行bold,italic等格式化操作后保持先前鼠标所在的位置.要好好的解决这个问题,就必须将Selection和Range的api ...
- 用 js 的 selection range 操作选择区域内容和图片
原创文章,转载请注明出处并保留地址.原文地址:http://www.cnblogs.com/muge10/p/6723894.html 最近在做编辑器相关的东西,遇到一个需求,用户在编辑器中插入或者粘 ...
- If,for,range混合使用笔记-(VBA视频教程2:使用IF进行逻辑判断)
-- 新建表格:#单元格a1-a100全部等于1的代码 Sub test() Dim i As Integer For i = To Range( Next End Sub -- 新建表格:#单元格a ...
- getSelection、range 对象属性,方法理解,解释
网上转了一圈发现没有selection方面的解释,自己捣鼓下 以这段文字为例子.. <p><b>法国国营铁路公司(SNCF)20日承认,</b>新订购的2000列火 ...
- Range对象理解,浏览器兼容性,获取鼠标光标位置
一.关于浏览器的兼容性 目前主要有3种关于range的类似的对象,分别是W3C range 对象,Mozzlia selection ,ie TextRange 关于这三种的区别,请查看文档 http ...
- 编辑器开发之 Range 范围对象的学习
写在前面: 网上有各种富文本编辑器,微博分享等操作,这些功能非常实用,他们就是使用 range,selection 对象来实现的,这两个对象偏冷门,不涉及编辑器一般用不到,range 对象是对选区的操 ...
- 【原创】【2】rich editor系列教程。了解document.execommand操作,保存丢失的range,实时反馈样式给工具栏
[原创][2]rich editor系列教程.了解document.execommand操作,保存丢失的range,实时反馈样式给工具栏 索引目录:http://www.cnblogs.com/hen ...
- 运用 Range 对象处理 Word 文档内容
运用 Range 对象处理 Word 文档内容 在所有 Office 应用程序中,Microsoft Word 可能是应用最广泛的应用程序,它还经常在自定义 Office 解决方案中扮演重要的角色 ...
- javascript笔记——js获取input标签中光标的索引
出处:http://www.cnblogs.com/MrZouJian/p/5850553.html function getTxt1CursorPosition(){ var oTxt1 = doc ...
随机推荐
- ssh原理[转]
SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很多普通用户也每天使用. SSH具备多种功能,可以用于 ...
- 【Python@Thread】thread模块
一.关于Python多线程 Python解释器中可以同时运行多个线程,但是再任意时刻只能有一个线程在解释器运行. Python虚拟机的访问是由全局解锁器(GIL)控制的,由GIL保证同时只有一个线程的 ...
- erlang四大behaviour之三-gen_event
来源:http://www.cnblogs.com/puputu/articles/1689623.html 1. 事件处理规则 在OTP中,事件管理器是一个事件可以发送到的命名对象,一个事件可以是一 ...
- SQL Server 2012中快速插入批量数据的示例及疑惑
SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以 ...
- postgreSqL的序列sequence
PostgreSQL uses sequences to generate values for serial columns and serial columns are generally wha ...
- ssl证书验证
当我们在访问https网站时,浏览器就会自动下载该网站的SSL证书,并对证书的安全性进行检查. 其他概念不说了,有效期之类的验证也不说了.只说数字证书的真实性和可信性验证. 1.CA下发给网站的证书是 ...
- nginx(ubuntu)设置别名访问目录
1 2 3 4 5 6 7 8 9 10 11 12 13 location /phpmyadmin/ { alias /data/phpmyadmin/; index index.html in ...
- HDU 5778 abs
题意转化一下就是寻找一个数P,要求P质因素分解完后,质因素没有重复,还要保证abs(P*P-x)最小. 暴力,在sqrt(x)附近向下向上分别枚举一下. #pragma comment(linker, ...
- iOS tableView的系统分割线定格设置以及分割线自定制
一.关于分割线的位置. 分割线的位置就是指分割线相对于tableViewCell.如果我们要根据要求调节其位置,那么在iOS7.0版本以后,提供了一个方法如下: if ([self.tableView ...
- Windows进程间通信(上)
一.管道 管道(pipe)是用于进程间通信的共享内存区域.创建管道的进程称为管道服务器,而连接到这个管道的进程称为管道客户端.一个进程向管道写入信息,而另外一个进程从管道读取信息. 异步管道是基于字符 ...