range精讲
var ec = range.endContainer endContainer不是一个引用类型 range是引用类型
range经过改变范围之后
var ec2 =range.endContainer 这个container是一个全新的container 要重新获取,
这两个range内容已经不一样了
回车空格成为了文本节点
<p id="p1">
<b id="b1">Hello</b>
World</p>
var p = document.getElementById("p1");
var child = p.childNodes;
var len = child.length;
var a1 = child[0].nodeValue; a1=“↵"
var a3 = child[2].nodeValue; a3 = "↵World"
1.selectNode
startOffset:选中节点在其父节点的字节点中索引的位置,兼容DOM的浏览器会将空格视为一个文本字节点,这个空格指索引是0的位置如果有空格就将其视为一个文本节点,在选区内部的空格不算,所以
<body> 空格 这时startOffset是1
<p> 空格
<b>hello</b> 空格
world
</p>
</body>
<body><p>...</p></body> 这时startOffset是0
endOffset:startOffset+被选中节点的总数(从start
Offset开始到选区结尾的所有子节点个数)
commonAncestorContainer :startContainer,endContainer共同的父节点,最深的那一个,同时包含这两个节点的第一个元素
2.selectNodeCOntents
<body>
<p> 空格 这时startOffset是1
<b>hello</b> 空格
world
</p>
</body>
/*********************示例程序****************************/
window.onload = function(){
var range = document.createRange(),
range2 = document.createRange();
var p = document.getElementById("p1");
var child = p.childNodes;
var len = child.length;
var a1 = child[0].nodeValue;
var a3 = child[2].nodeValue;
range.selectNode(p);
range2.selectNodeContents(p);
};
range:startOffset :1,endOffset:2
range2: startOffset:0,endOffset:3
<p id="p1">
<b id="b1">Hello</b>
World</p>
/*************************************************************/
range.detach();
range = null;
解除对范围的引用,使其从创建范围的文档中分离出来,从而让垃圾回收机制回收其内存
ec = range.endContainer
range.deleteContents();
range重置
以上两种情况range 发生了改变,但ec还是未改变之前的ec
range发生改变都不会影响ec和sc,因为它们是指向一个dom节点的指针,range的endContainer和startContainer会改变
sc === ec情况下,删除sc,ec并没有被删除
p =K('<P><br /></p>')
range.setStartAfter(p[0]).collapse(true);
定位到p的前后任一位置,光标都显示
range.selectNodeContents 会添加‍ 在表单序列化时容易出错 比如‍<br /> br就会被删掉
range精讲的更多相关文章
- iOS CAShapeLayer精讲
前言 CAShapeLayer继承自CALayer,因此,可使用CALayer的所有属性.但是,CAShapeLayer需要和贝塞尔曲线配合使用才有意义. 关于UIBezierPath,请阅读文章:i ...
- 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询
第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...
- 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求
第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求 selenium模块 selenium模块为 ...
- Gradle系列之一 Groovy语法精讲
Gradle技术之一 Groovy语法精讲 gradle脚本是基于groovy语言开发的,想要学好gradle必须先要对groovy有一个基本的认识 1. Groovy特点 groovy是一种DSL语 ...
- 深入Java核心 Java内存分配原理精讲
深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...
- WKWebView API精讲(OC)
WKWebView API精讲(OC) 前言 鉴于LL同志对笔者说:“能不能写个OC版本的WKWebView的使用教程?”,还积极打赏了30RMB,笔者又怎么好意思拒绝呢,于是才有了下文. 所有看到本 ...
- 《VC++ 6简明教程》即VC++ 6.0入门精讲 学习进度及笔记
VC++6.0入门→精讲 2013.06.09,目前,每一章的“自测题”和“小结”三个板块还没有看(备注:第一章的“实验”已经看完). 2013.06.16 第三章的“实验”.“自测题”.“小结”和“ ...
- iOS开发——语法篇OC篇&高级语法精讲二
Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...
- iOS开发——语法篇OC篇&高级语法精讲
高级语法精讲 一.NSSet.NSMutableSet集合的介绍 1)NSSet.NSMutableSet集合,元素是无序的,不能有重复的值. 2)用实例方法创建一个不可变集合对象 例如: //宏定义 ...
随机推荐
- 关于ZBarReaderView 打开闪光灯
关于ZBarReaderView 打开闪光灯 ZBarReaderView *readerView; - (void)changeLight:(id)sender{ UIButton *btn = ( ...
- 从C#到Swift,Swift学习笔记
最近在学习IOS,我一直使用的是C#来开发,对Java .C.C++也有一定的了解.最近入手了一台Air,想试着学习IOS开发. 如果你不是C#和Java阵营的,如果你对Swift没有兴趣,就不用往下 ...
- mac下安装phpstorm主题
在<推荐一个phpstorm主题和字体>中介绍了window下如何安装phpstorm主题,这里我们在介绍一下如何在MAC下安装phpstorm主题. 安装方法和window类似,只是需要 ...
- 谈谈 epmd
在<Erlang/OTP 并发编程实战>中,对 epmd 有如下描述: epmd 代表 Erlang 端口映射守护进程(Erlang Port Mapper Daemon). 每启动一个 ...
- TextFlow with JavaFX 2
http://sahits.ch/blog/?p=2372 ———————————————————————————————————————————————————— TextFlow with Jav ...
- easyui最简单的左右布局实现,及tab的右键菜单实现
发现最近有些人问用JQuery easyui要怎么实现左右结构的布局.就是点击左边的菜单在右边的tab中打开.其实easyui要实现这种布局很简单,只需要简单的几行代码就ok了. 特意做了一个小小的d ...
- Package java.sql
Provides the API for accessing and processing data stored in a data source (usually a relational dat ...
- 报错:org.apache.jasper.JasperException: /jsp/head.jsp (line: 1, column: 2) Page directive: illegal to
上面报错提示的是org.apache.jasper.JasperException: /jsp/head.jsp (line: 1, column: 2) Page directive: illega ...
- js instanceof (2)
instanceof运算符可以用来判断某个构造函数的prototype属性是否存在另外一个要检测对象的原型链上.实例一:普遍用法 A instanceof B :检测B.prototype是否存在于参 ...
- PHP实现自己活了多少岁
1.mktime()函数的功能 2.代码: $birth = mktime(0,0,0,10,2,1992);//出生的时间戳 $time = time();//当前的时间戳 $age = floor ...