HTML5编辑API之Range对象

前端之家收集整理的这篇文章主要介绍了HTML5编辑API之Range对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Range对象代表页面上的一段连续区域,通过Range对象,可以获取修改页面上的任何区域,可以通过如下创建一个空的Range对象,如下:

     var  range = document.createRange();

在html5中,每一个浏览器窗口及每一个窗口中都有一个selection对象,代表用户鼠标在页面中所选取的区域,(注意:经过测试IE9以下的浏览器不支持Selection对象),可以通过如下语句创建selection对象;

   var  selection = document.getSelection();     或者

   var  selection  = window.getSelection();

每一个selection对象都有一个或者多个Range对象,每一个range对象代表用户鼠标所选取范围内的一段连续区域,在firefox中,可以通过ctrl键可以选取多个连续的区域,因此在firefox中一个selection对象有多个range对象,在其他浏览器中,用户只能选取一段连续的区域,因此只有一个range对象。

可以通过selection对象的getRangeAt方法获取selection对象的某个Range对象,如下:

   var range = document.getSelection().getRangeAt(index);

 getRangeAt方法有一个参数index,代表该Range对象的序列号;我们可以通过Selection对象的rangeCount参数的值判断用户是否选取了内容

  1. 用户没有按下鼠标时候,该参数的值为0.
  2. 用户按下鼠标的时候,该参数值为1.
  3. 用户使用鼠标同时按住ctrl键时选取了一个或者多个区域时候,该参数值代表用户选取区域的数量
  4. 用户取消区域的选取时,该属性值为1,代表页面上存在一个空的Range对象;
Meta range 内容
内容为:

selectNode方法Range对象的selectNode方法用于将Range对象的起点指定为某个节点的起点,将Range对象的终点指定为该节点的终点,使Range对象所代表的区域中包含该节点。使用方法如下:

rangeObj.selectNode(node);

上面的rangeObj代表一个Range对象,该方法使用一个参数,代表页面中的一个节点。

selectNodeContents方法用于将Range对象的起点指定为某个节点中的所有内容的起点,将Range对象的终点指定为该节点所有内容的终点,使Range对象所代表的区域中包含该节点的所有内容。使用方法如下:

rangeObj.selectNodeContents(node);

含义如上所示;

deleteContents方法用于将Range对象中所包含的内容页面删除,使用方法如下所示:

rangeObj.deleteContents();

<div class="cnblogs_code">

    
        
    内容
    
    删除元素
    删除内容

setStart方法用于将某个节点中的某处位置指定为Range对象所代表区域的起点位置,使用方法如下:

rangeObj.setStart(node,curIndex);

如上代码rangeObj代表一个Range对象,该setStart方法使用2个参数,第一个参数node代表一个节点,第二个参数是一个数字,当第一个参数node所代表的节点是一个内容为一段文字文字节点时,该参数值用于指定将第几个文字的结束位置作为Range对象所代表的区域的起点位置;当第一个参数node所代表的节点中包括其他子节点时,该参数值用于将第几个子节点的结束位置指定为Range对象所代表的区域的起点位置;

setEnd方法 用于将某个节点中的某处位置指定Range对象所代表区域的结束位置。使用方法如下所示:

rangeObj.setEnd(node,curIndex);

方法中的2个参数的含义如setStart方法中参数的含义相同;只不过一个是起点位置,另一个是结束位置;

setStartBefore方法用于将某个节点的起点位置指定为Range对象所代表区域的起点位置。

setStartAfter方法

setEndBefore方法

setEndAfter方法: 用于将某个节点的终点位置指定为Range对象所代表区域的终点位置。

删除文字功能aaaaaaaaa 删除文字
方法 Range对象的cloneRange方法用于对当前的Range对象进行复制,该方法回复制的Range对象,
这里是内容 克隆

方法用于在页面上追加一段HTML代码,并且将Range对象所代表区域中的HTML代码克隆到被追加的HTML代码中;
@H_735_502@ 克隆 @H_735_502@

方法用于将Range对象所代表区域中的HTML代码克隆到一个DocumentFragment对象中,然后从页面删除这段HTML代码
么么哒 移动元素

方法方法用于将指定的节点插入到某个Range对象所代表的区域中,插入位置为Range对象所代表区域的起点位置,如果该节点已经存在于页面中,该节点将被移动到Range对象代表的区域的起点处。
按钮

文字在粗体前面 } </span><span style="background-color: #f5f5f5; color: #0000ff;"&gt;else</span><span style="background-color: #f5f5f5; color: #000000;"&gt; { </span><span style="background-color: #f5f5f5; color: #0000ff;"&gt;if</span><span style="background-color: #f5f5f5; color: #000000;"&gt; (selRange.compareBoundaryPoints(Range.END_TO_START,boldRange) </span><span style="background-color: #f5f5f5; color: #000000;"&gt;>=</span> <span style="background-color: #f5f5f5; color: #000000;"&gt;0</span><span style="background-color: #f5f5f5; color: #000000;"&gt;) alert(</span><span style="background-color: #f5f5f5; color: #000000;"&gt;"</span><span style="background-color: #f5f5f5; color: #000000;"&gt;选取的<a href="/tag/wenzi/" target="_blank" class="keywords">文字</a>在粗体的后面</span><span style="background-color: #f5f5f5; color: #000000;"&gt;"</span><span style="background-color: #f5f5f5; color: #000000;"&gt;); } } } </span><span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;script</span><span style="color: #0000ff;"&gt;></span> <span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;div</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt; 下雨天了怎么办,</span><span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;b </span><span style="color: #ff0000;"&gt;id</span><span style="color: #0000ff;"&gt;="boldTest"</span><span style="color: #0000ff;"&gt;></span>突然<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;b</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;好想你。 </span><span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;br</span>@H_735_<a href="/tag/502/" target="_blank" class="keywords">502</a>@</span> <span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;button </span><span style="color: #ff0000;"&gt;onclick</span><span style="color: #0000ff;"&gt;="b()"</span><span style="color: #0000ff;"&gt;></span>位置比较<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;button</span><span style="color: #0000ff;"&gt;></span> <span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;div</span><span style="color: #0000ff;"&gt;></span></pre>

选择元素 取消元素 显示Range内容

显示内容

显示的情况

 range的detach方法如:rangeObj.detach()释放Range对象,释放后其他事件就不成立了,主要用于释放Range对象来提升应用的性能

猜你在找的HTML5相关文章