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 会添加&#8205 在表单序列化时容易出错 比如&#8205<br /> br就会被删掉
 

range精讲的更多相关文章

  1. iOS CAShapeLayer精讲

    前言 CAShapeLayer继承自CALayer,因此,可使用CALayer的所有属性.但是,CAShapeLayer需要和贝塞尔曲线配合使用才有意义. 关于UIBezierPath,请阅读文章:i ...

  2. 第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询

    第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本查询 1.elasticsearch(搜索引擎)的查询 elasticsearch是功能 ...

  3. 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求

    第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求 selenium模块 selenium模块为 ...

  4. Gradle系列之一 Groovy语法精讲

    Gradle技术之一 Groovy语法精讲 gradle脚本是基于groovy语言开发的,想要学好gradle必须先要对groovy有一个基本的认识 1. Groovy特点 groovy是一种DSL语 ...

  5. 深入Java核心 Java内存分配原理精讲

    深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...

  6. WKWebView API精讲(OC)

    WKWebView API精讲(OC) 前言 鉴于LL同志对笔者说:“能不能写个OC版本的WKWebView的使用教程?”,还积极打赏了30RMB,笔者又怎么好意思拒绝呢,于是才有了下文. 所有看到本 ...

  7. 《VC++ 6简明教程》即VC++ 6.0入门精讲 学习进度及笔记

    VC++6.0入门→精讲 2013.06.09,目前,每一章的“自测题”和“小结”三个板块还没有看(备注:第一章的“实验”已经看完). 2013.06.16 第三章的“实验”.“自测题”.“小结”和“ ...

  8. iOS开发——语法篇OC篇&高级语法精讲二

    Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...

  9. iOS开发——语法篇OC篇&高级语法精讲

    高级语法精讲 一.NSSet.NSMutableSet集合的介绍 1)NSSet.NSMutableSet集合,元素是无序的,不能有重复的值. 2)用实例方法创建一个不可变集合对象 例如: //宏定义 ...

随机推荐

  1. UI-2-UILabel&UIImageView-补充

    课程要点: 控件之间的继承关系. UILabel UIImageView 利用UIImageView实现帧动画 补充 试图之间的继承关系 昨天学习UIView的时候,了解到UIView里面有以下几个常 ...

  2. Linux HugePage特性

    Linux HugePage特性 HugePage,就是指的大页内存管理方式.与传统的4kb的普通页管理方式相比,HugePage为管理大内存(8GB以上)更为高效.本文描述了什么是HugePage, ...

  3. PHP编译configure时常见错误

    PHP的安装虽然有时候很简单,可是如果应用一多,我们安装起来就很头痛了!出错最多的就是安装PHP扩展的时候了.其实不管是你是Apache类的应用还是Nginx类的,PHP的安装都不是很简单,虽然网上有 ...

  4. 基于 UML 的业务建模举例

    简介: 对于管理流程咨询项目.大型信息化建设项目和套装管理软件实施项目,对业务环境的分析和理解对项目的成功至关重要.系统.全面理解 IT 系统所处的业务环境,可以帮助 IT 系统能提供正确系统功能,并 ...

  5. 基础的 Web Services 平台是 XML + HTTP。

    HTTP 协议是最常用的因特网协议. XML 提供了一种可用于不同的平台和编程语言之间的语言. Web services 平台的元素: SOAP (简易对象访问协议) UDDI (通用描述.发现及整合 ...

  6. Spring MVC生成XML

    以下示例演示如何使用Spring Web MVC框架生成XML.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一个名 ...

  7. 009android初级篇之APP中使用系统相机相册等集成应用

    android应用中使用相机功能,大致有两种方式实现: 直接调用系统内部的相机程序,显示的也是系统预设的界面(简单,只有简单的拍照功能): 自己去implement一个相机程序(不难,较具备弹性,但相 ...

  8. Pig系统分析(8)-Pig可扩展性

    本文是Pig系统分析系列中的最后一篇了,主要讨论怎样扩展Pig功能.不仅介绍Pig本身提供的UDFs扩展机制,还从架构上探讨Pig扩展可能性. 补充说明:前些天同事发现twitter推动的Pig On ...

  9. WPF-Binding对数据的检验

    设置Binding的ValidationRules属性对Binding进行检验 <StackPanel> <TextBox x:Name="txtAge" Fon ...

  10. Machine Learning第十周笔记:大规模机器学习

    博客已经迁移到Marcovaldo's blog (http://marcovaldong.github.io/) 刚刚完毕了Andrew Ng在Cousera上的Machine Learning的第 ...