`
daoger
  • 浏览: 529678 次
  • 性别: Icon_minigender_1
  • 来自: 山东济南
社区版块
存档分类
最新评论

DHTML --TextRange对象的使用

阅读更多
http://www.xyhhxx.com/display.aspx?subID=699

使用TextRange对象一 
对于文本处理,许多用户都只使用the innerText/innerHTML 和 outerText/outerHTML 属性和它的相关方法,然而使用文本范围对象将有许多高级的文本操作。TextRange对象可以如下使用: 

1、定位给定元素或给定点的文本 
2、在文档字符里查找单词或字符 
3、移动逻辑单元里的文本 
4、提供文档里平常的文本或HTML文本读/写 访问 

在非微软WIN32平台,该可能没有该特性,关于Microsoft@ Internet Explorer 平台交互能力,请查看微软知识基地库的文章Q172976 


使用TextRange对象二 ——TextRange概述 

TextRange对象是 动态HTML(DHTML)的高级特性,使用它可以实现很多和文本有关的有用的任务,象搜索和选择文本。文本范围让您可以选择性的将字符、单词和句子从文档中挑选出来。TextRange对象是在HTML文档将要显示的文本流上建立开始和结束位置的抽象对象。考虑以下简单的HTML文档:
  
<HTML>  
<BODY>  
<H1>Welcome</H1>  
<CENTER><H2>Overview<H2></CENTER>  
<P>Be sure to <B>Refresh</B> this page.</P>  
</BODY>  
</HTML>  


在该文档中,建立一个在BODY元素上的TextRange对象将会在body的内容文本的开始定位开始位置,在body内容文本的结束位置定位结束位置,该TextRange 对象将包含的文本是“Welcome Overview Be Sure to Refresh this page." 

使用TextRange对象我们可以做什么? 

用TextRange对象处理文本分两个部分。首先建立一个文本范围,用它的开始和结束位置来封装需要的文本。第二个步骤对该文本范围使用某一方法,或者将该文本做个拷贝以在文本的其他地方使用它,一旦文本范围被定位好,您可以查找文本,选择文本和拷贝文本以在文档的其他地方使用。 

定位TextRange对象 

每个文本范围都有一个开始和结束位置来定位TextRange对象封装的文本范围。当你创建一个新的 文本范围,开始和结束位置缺省封装了整个的文本内容。使用move、 moveStart和 moveEnd 方法可以改变文本范围的范围。 

还有别的方法可以将TextRange对象放置在别的特定的元素上,或者定位在整个页面。例如,moveToElementText 能够定位文本范围封装给定元素的包含文本。moveToPoint 可以将文本范围定位在用户鼠标点击的点上。用户点击的x和y坐标通过window.event 对象取得,您可以用它们来将范围定位在给定的点上,从这个爆破点,您可以将范围扩大到封装一个单词(word)、句子(sentence)、整个可编辑文本(textEdit)(TextRange对象可以包含的整个可能部分)。
 
<HTML><HEAD>  
<TITLE>moveToPoint Example</TITLE>  
<script>  
function selectMe() {  
var r=document.body.createTextRange();  
r.moveToPoint(window.event.x, window.event.y);  
r.expand("word");  
r.select();  

</script>  
</HEAD>  
<BODY>  

<H1 id=myH1 onclick=selectMe()>Click on a word and it will highlight</H1>  

</BODY>

</HTML>  



您可以使用body对象、TEXTAREA,或者BUTTON 元素的createTextRange方法 来创建TextRange.您也可以从用户的选择模式上建立一个文本范围,selection 对象的createRange 将返回一个文本范围。您可以想使用createTextRange.创建的范围一样使用该范围的方法、属性。 

创建body范围的TextRange对象将不包含 TEXTAREA 和 BUTTON 的内容。相反的,您不可以通过改变基于TEXTAREA 和 BUTTON 的文本范围的开始和结束位置来将范围扩大到该特定元素以外的范围去。使用每个元素提供的属性,, isTextEdit and parentTextEdit是不同阶层的方法,如果您的文档上包含一个TEXTAREA,那么body的createTextRange 将不能找到用户当前点击的位置。以下上面代码的改进版以处理这重情况: 

<HTML><HEAD>  
<TITLE>moveToPoint Example</TITLE>  
<script for=document event=onclick>  
var r  
if(window.event.srcElement.isTextEdit)  
{  
r=window.event.srcElement.createTextRange();  
else{  
var el=window.event.srcElement.parentTextEdit;  
r=el.createTextRange();  

r.moveToPoint(window.event.x, window.event.y);  
r.expand("word");  
r.select();  
</script>  
</HEAD>  
<BODY>  

<H1 id=myH1>Click on a word and it will highlight</H1>  

<TEXTAREA>  
There’s text in this element too that you could click on  
</TEXTAREA>  

</BODY>

</HTML>   



使用TextRange对象三 ——取得TextRange内容 

TextRange对象的内容可以通过TextRange的 text 和 htmlText属性来查看。text属性的和元素对象的innerText 属性类似的读/写属性,唯一的不同是这里是封装在TextRange 对象里。 

TextRange对象的htmlText属性是只读属性,可以用它来检查TextRange对象开始和结束位置之间的HTML代码。可以使用pasteHTML 方法来象文本范围中添加HTML内容。尽管您可以添加任何您想添加的HTML内容到文本范围里,但是 pasteHTML 方法并不从属文档的层次结构。就想innerHTML 和 outerHTML 属性,尽管在文本范围内加入不正确或不恰当的标签时pasteHTML 方法不会失败,但是文档显示出来的并不象您所期待的那样。如果您粘贴了一些代码片段,这些片段将会自动关闭以防止影响随后的文本或元素。例如,这意味着,如果您的脚本以来于在 document对象的all 集合。那么在调用pasteHTML方法以后,那么document.all集合的sourceIndex 将定位在不同的元素上。 


使用TextRange对象四 ——比较范围 

您一次可以建立多个文本范围,独立的使用它们。同时访问同一元素的不同部分。 您也可以使用duplicate 方法拷贝一个文本范围。如果您想暂时访问原始范围的一部分而由不想重新创建或另存原始范围时,这非常有用。您可以使用isEqual 和 inRange方法来决定一个文本范围和另一文本范围的关系。 

因为对象模式不能携带文本范围,任何时候控制发生然后重新进入代码时,您都必须重新创建文本范围。例如,一个被事件处理创建的文本范围,在事件处理返回时被抛弃。您可以使用inRange 方法来测定一个文本范围是否整个被包含在另一文本范围内。使用isEqual 方法来测定两个文本范围是否相等。如果文本范围的开始和结束定位在相同位置,那么两个文本范围相等。注意两个相等的文本范围被认为相互包含在另一个里,也就是任何一个的inRange方法返回真。 

您可以使用setEndPoint来设置设置开始或结束位置来和另一个文本范围匹配。该方法有两个参数:一个字符串,表明要传送的结束点,源文本范围将要将结束点设置到它的结束点的文本范围。 

r1.setEndPoint( "StartToEnd", r2 ) 

您也可是使用 "StartToStart"、 "EndToStart" 和 “EndToEnd" 来设置结束点。 

您可以使用 compareEndPoints 方法来比较两个文本范围的开始和结束位置。该方法通过比较结束点来返回-1、 0 或者 1,分别表示第一个文本范围 小于,等于或者大于第二个文本范围。 

书签很容易保存一个文本范围的开始和结束位置,并且在您需要它的时候可以马上恢复这些位置。您可以创建一个通过getBookmark 方法取得文本范围的,它返回一个不透明的独一无二的字符串来标明书签。(不透明意味着不可读或写),使用传入字符串的moveToBookmark 方法将来将文本范围移回创建时的开始和结束位置。 

使用TextRange对象五 ——命令 

您可以使用命令来给文本范围的文本携带格式和特定的动作。您可以使用execCommand方法来执行命令。您需要提供命令名,和要相应的参数。例如,在Microsoft JScript 中,您可以象如下那样使用 Bold 命令来将文本 该为粗体: 
var rng = document.body.createTextRange();  
rng.collapse();  
rng.expand("sentence");  
rng.execCommand("Bold");  

以上例子将页面上所有文本转化为粗体。 

并不是每次每个命令都可用,您可以使用queryCommandEnabled 和queryCommandSupported 方法来测试对于特定的文本范围一个命令是否有用。 

为了测试一个特定命令是否已经被一个文本范围运用,可用使用queryCommandState 方法取得该命令的状态。如果以用则该状态为真。

2
1
分享到:
评论
1 楼 ly745455 2011-11-10  
[img][/img][url][/url][flash=200,200][/flash]
[i][/i][b][/b]

相关推荐

    dhtml-suite-for-applications v1.9 最新版

    在实际开发中,dhtml-suite-for-applications v1.9的使用流程通常包括以下几个步骤: 1. 引入库:在HTML文件中通过`&lt;script&gt;`标签引入dhtml-suite的JavaScript和CSS文件。 2. 创建组件:利用JavaScript代码实例化所...

    JavaScript中textRange对象使用方法小结

    TextRange对象属于动态HTML(DHTML)的一部分,能够帮助开发者实现更加动态的文本交互功能。以下是TextRange对象使用方法的详细介绍: 属性和方法: 1. boundingHeight: 此属性用于获取TextRange对象绑定矩形区域...

    dhtml-html-css-javascript-dom帮助文档(.chm)五合一

    “dhtml-html-css-javascript-dom帮助文档(.chm)五合一”这一标题表明这是一个综合性的技术文档资源,包含了五个关键领域的知识:Dynamic HTML (DHTML)、HTML、Cascading Style Sheets (CSS)、JavaScript以及...

    动态网页全接触:DHTML-JavaScript.rar

    9. **面向对象编程**:JavaScript支持基于原型的面向对象编程,以及后来引入的类语法。 10. **Node.js**:JavaScript还可以在服务器端运行,通过Node.js平台实现后端开发。 通过学习和掌握DHTML和JavaScript,...

    大优惠dhtml-html-css-javascript-dom帮助文档五合一

    DHTML完全手册.chm CSS + JS合订版手册.chm 。。。 这些是我从事前端开发这么多年来的积蓄啊,都贡献出来啦!各有各的好处,各个互补十分齐全。 【备注】如果你想转APP跨平台开发,那么这些也都是基础的。因为...

    js-css-dhtml-sql文档

    3. **对象与原型链**:对象创建、属性访问、原型继承。 4. **DOM操作**:通过JavaScript操作HTML元素,实现动态更新页面。 5. **事件处理**:响应用户交互,如点击、鼠标移动等。 6. **AJAX**:异步数据交换,实现...

    VBScript-JavaScript-Dhtml-SQl-WSH-DOM-XML-CSS-ASp._VBScript HTML

    VBScript JavaScript Dhtml SQL WSH DOM XML CSS ASp等12个参考手册

    网页制作先关教程 里面包含flash教程-gb、动态HTML 教程dhtml-gb、网页特效制作教程webeffect

    DHTML-gb.exe教程可能涵盖了如何使用这些技术来创建动态效果,如下拉菜单、图像滑动、弹出窗口等。理解DHTML对于现代网页设计至关重要,因为它是实现网页响应式设计和增强用户互动性的基础。 最后,网页特效制作...

    动态 HTML (DHTML) 对象模型参考

    DHTML 对象 DHTML 属性 DHTML 方法 DHTML 事件 DHTML 集合 HTML 参考 HTML 元素 HTML 字符集 样式表(CSS)参考 CSS 属性参考 CSS 长度单位参考 其他参考 命令标识符 缺省行为参考 htc 行为参考 可视化...

    打包css-html-js-php-ajax-正则-jsp-smarty-vbscript-jquery-Dhtml-SQL等14本chm手册教程超牛!

    DHTML 手册.chm javascript.chm jQueryAPI-1.41.chm jsp中文手册.chm php重要知识点,重要函数参考.doc smarty中文手册.chm VBScript 函数手册(普通下载).CHM 经典SQL语句大全.doc 正则表达式系统教程.CHM [PHP.手册....

    DHTML JAVASCRIPT

    JavaScript是DHTML的核心部分,用于处理事件、修改DOM(文档对象模型)以及与服务器进行异步通信。 1. **HTML与DHTML**:HTML是网页的基础,定义了网页的结构。而DHTML通过引入动态性,使HTML元素可以在页面加载后...

    DHTMLConsole-crx插件

    标题('X-DHTML-CONSOLE-MSG:Hello World'); ?&gt; 从版本0.3开始,您现在可以执行javaScript警报 &lt;?PHP ('X-DHTML-CONSOLE-MSG:alert:Hello World'); ?&gt; 从版本0.3开始,您可以通过以下方式从服务器清除...

    DHTML-Window-Manager-开源

    DHTML-Window-Manager是Webbrowser中的免费Window-Manager。 由于还有许多其他的免费Javascript库,这些内容已经涵盖了诸如“浏览器中的Windows管理”之类的内容,因此不再维护该项目。

    DHTML 手册--------HTML,JAVASCRIPT深入解析

    5. JavaScript面向对象编程:类和对象的概念,以及原型链和继承的实现方式。 6. JavaScript性能优化:如避免阻塞渲染的脚本插入方法,合理使用闭包,减少全局变量等。 7. JavaScript库与框架:可能会介绍jQuery和...

    DHTML参考手册,非常好

    DHTML在1990年代末到2000年初的互联网发展中扮演了重要角色,为早期的网页带来了丰富的动态效果。 **HTML(HyperText Markup Language)**是网页的基础,用于定义页面的结构。HTML标签描述了文档的各个部分,如标题...

    Live-DHTML-Simulator:在 Live Simulator 中运行 HTML、CSS、javascript 检查其中的 DHTML 临时代码!

    Live-DHTML-Simulator 在 Live Simulator 中运行 HTML、CSS、javascript 检查其中的 DHTML 临时代码! 特征: 语法高亮 实时和运行 可调整大小和平滑 React灵敏 保存和下载 这里使用 Ace 编辑器: Ace 是一个用 ...

    dhtmlxGantt 介绍以及使用说明

    ### dhtmlxGantt 介绍及使用说明 #### 一、概述 dhtmlxGantt 是一款基于 JavaScript 的强大甘特图组件库,它属于 dhtmlxSuite 中的一部分。该组件库提供了创建交互式甘特图所需的所有工具,非常适合于项目管理和...

    DHTML文档对象模型

    **DHTML文档对象模型** DHTML(Dynamic HTML)是一种用于创建动态、交互式网页的技术,它结合了HTML、CSS(层叠样式表)、JavaScript以及DOM(文档对象模型)等技术,使得网页内容能够实时更新、交互性和动画效果...

    DHTML手册 默认行为 文档对象模型3合1

    DHTML文档对象模型.CHM可能包含以下内容: 1. **DOM层次结构**:解释DOM树的概念,包括元素节点、属性节点、文本节点等,以及它们之间的关系。 2. **DOM接口**:介绍Node、Element、Attribute等核心接口,以及如何...

Global site tag (gtag.js) - Google Analytics