`
wangtong40
  • 浏览: 253942 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

TextRange对象

阅读更多

因用户要求方与TextRange对象结缘,用于处理JavaScript对象文本部分内容的一个对象。


TextRange是用来表现HTML元素中文字的对象,虽然我们平时不太常用这个对象,可是它却在IE4.0中就已提供了。不过TextRange提供的调用方法却都比较晦涩,那么我们能拿它做些什么呢?
 TextRange的传统用途是对用户在Web页上用鼠标圈选的文字内容的操作,比如变化、删除、新增等。但其经典的用途却是,在Web页面中查找文字(这个比较简单)和获取输入框光标的位置。其中后者又有可以衍生出很多更有用的用途,比如:限制输入的MaskTextBox,其核心技术点就是获取输入框的光标位置,然后使用正则表达式判断输入内容。还有我后面会介绍的"使用方向键在输入框矩阵中自然的导航",核心技术点也是获取输入框中的光标位置。


获取输入框中的光标位置的整个代码其实很短,只是这些对象和方法不太常用而已。

<script language="javascript">
function GetCursorPsn(txb)
{
    var slct = document.selection;
    var rng = slct.createRange();
    txb.select();
    rng.setEndPoint("StartToStart", slct.createRange());
    var psn = rng.text.length;
    rng.collapse(false);
    rng.select();
    return psn;
}
</script>

 



 这里说一下使用这个GetCursorPsn()方法后,会给输入框操作带来的副作用。

对于输入框

<input type="text" onkeydown="GetCursorPsn(this)">

 

它将不能再使用Shift+左右这两个方向键来选择文本;对于

<textarea onkeydown="GetCursorPsn(this)"></textarea>

 

,将不能再使用Shift+上下左右四个方向键来选择文本。因为代码在获取了当前光标到文本的startPoint后,调用rng.collapse(false );会 改变文本筐内文本的EditPoint。

 




1、满足用户要求代码片段,使用上下左右四个键实现文本框的跳转,同时选择其文本框内容,从而方便用户修改,代码如下:

var range = $currentTextfield.createTextRange();//$currentTextfield为jQuery对象
range.moveStart('character',0);
range.select();


以下是舶来的一片个人感觉还算不错的关于TextRange的文章:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
body { font-size:12px; }
#show { background-color:#CCFF99; }
</style>
</head>
<body>   
<textarea id="content" cols="30" rows="10">
河中鱼类离奇死亡,下游居民频染怪病,沿岸植物不断变异,是残留农药?还是生化攻击?敬请关注今晚CCTV-10《科学探索》,即将播出的专题节目:《神秘的河边洗脚人--中国男足》
</textarea>   

<button id="btn">获取选中值</button>
<div id="show"></div>
<script>   
    String.prototype.trim = function() {    
         return this.replace(/^\s+|\s+$/g, "");    
     } 
	 /* 方法一 FF下有点问题 */
     function getSelectText() {   
        try{
            // IE: document.selection.createRange() W3C:window.getSelection()
            var selectText = (document.selection && document.selection.createRange )? document.selection.createRange().text : window.getSelection().toString();
            if(selectText != null && selectText.trim() != ""){
               return selectText;
            }
        }catch(err){}
     }      
	/* 方法二 */
	function getSelectText2(id) {
		var t = document.getElementById(id);
		if(window.getSelection) {
			if(t.selectionStart != undefined && t.selectionEnd != undefined) {
				return t.value.substring(t.selectionStart, t.selectionEnd);
			} else {
				return "";
			}
		} else {
			return document.selection.createRange().text;
		}
	 }
	 document.getElementById('btn').onclick = function() {
		 document.getElementById('show').innerHTML = getSelectText2('content');
	 }
</script>
</body>   
</html>   


 


 


 

分享到:
评论

相关推荐

    JavaScript中textRange对象使用方法小结

    以下是TextRange对象使用方法的详细介绍: 属性和方法: 1. boundingHeight: 此属性用于获取TextRange对象绑定矩形区域的高度。通过它可以确定文本范围在页面上所占的空间大小。 2. boundingLeft: 获取TextRange...

    TextRange对象和selection对象实例

    ### TextRange对象与Selection对象详解 #### 一、概述 在早期的Internet Explorer浏览器中,为了方便用户在网页上操作文本(例如复制、粘贴、查找等),开发了一套独特的对象模型来支持这些功能,其中两个核心对象...

    处理文本部分内容的TextRange对象应用实例

    尽管在现代浏览器中DOM Range对象更常见,但TextRange对象在处理特定的文本操作时仍然有价值,尤其是在兼容旧版IE浏览器的场景下。 TextRange对象提供了一系列的方法,如`select()`用于选取文本,`collapse()`用于...

    Using the TextRange Object

    【使用TextRange对象】 在网页开发中,大多数用户通常只需要使用之前提到的innerText/innerHTML和outerText/outerHTML属性及方法来操作文本内容。然而,对于更高级的文本处理,可以利用“TextRange”对象来实现。...

    互联网软件开发与应用期末复习

    主要涉及到互联网软件开发的各个方面,包括JSP、UML、Web开发流程、域名结构、IP地址分类、WAIS链接、ASP.NET服务器控件、IIS系统管理、PHP语言控制结构、ASP.NET组件和模板、DHTML操作、TextRange对象以及ADO对象...

    javascript网页关键字高亮代码.docx

    2. **TextRange对象**:在Internet Explorer中,不支持标准的Range对象,而是使用TextRange对象。`createTextRange()`方法创建TextRange对象,`getBookmark()`和`moveToBookmark(bookmark)`用于保存和恢复Range的...

    html中select的属性.pdf

    47. parentTextEdit:获取文档层次中可用于创建包含原始对象的 TextRange 的容器对象。该属性控制 Select 元素的容器对象。 48. previousSibling:获取对此对象的上一个兄弟对象的引用。该属性控制 Select 元素的上...

    html学习心得,我感觉很好

    PARENTTEXTEDIT 属性用于获取文档层次中可用于创建包含原始对象的 TextRange 的容器对象。 这些属性和方法可以帮助开发者更好地理解和使用 HTML table 标签,提高开发效率和质量。本篇文章总结了 HTML 中 table ...

    VB 设置段落缩进

    3. **使用TextRange对象** 如果要对特定的文本范围进行操作,可以使用Word的`TextRange`对象。例如,选择一段文本并设置其缩进: ```vb Dim rng As Word.TextRange Set rng = doc.Range(Start:=1, End:=5) '选取...

    Simple Chrome Extension (Highlighted Content Text Actions)

    - **TextRange对象**:在JavaScript中,可以使用`window.getSelection()`获取用户当前选中的文本,并通过TextRange对象进行操作。 - **字符串处理**:对高亮文本进行分析和处理,如查找关键词、翻译、复制到剪贴板...

    C# FlowDocument文档的实例

    2. **设置富文本格式**:通过TextRange对象,你可以选择FlowDocument的一部分并应用样式,如改变字体、大小、颜色等。 ```csharp TextRange textRange = new TextRange(flowDoc.ContentStart, flowDoc.ContentEnd); ...

    CSS_style属性大全

    - **说明**: 用于判断是否可以通过该对象创建一个TextRange对象,这在文本编辑应用中很常见。 **27. LANG (lang)** - **功能**: 设置或获取要使用的语言。 - **语法**: `lang: [language-code]` - **说明**: ...

    Visual Basic 6编程技术大全 中译本扫描版带书签 2/2

    19.3.3 TextRange对象739 19.3.4表格对象741 19.4 DHTMLPage设计器742 19.4.1 DHTMLPage设计器742 19.4.2 DHTML元素编程744 19.4.3 DHTML应用程序748 19.5远程数据服务758 19.5.1 DHTML数据绑定758 19.5.2使用RDS...

    Visual Basic 6编程技术大全 中译本扫描版带书签 1/2

    19.3.3 TextRange对象739 19.3.4表格对象741 19.4 DHTMLPage设计器742 19.4.1 DHTMLPage设计器742 19.4.2 DHTML元素编程744 19.4.3 DHTML应用程序748 19.5远程数据服务758 19.5.1 DHTML数据绑定758 19.5.2使用RDS...

    ppt转换成TXT

    对于每个文本框形状,我们获取其TextRange对象,从而可以访问和输出其中的文本内容。 然而,这个过程需要注意几个问题。一是,必须确保用户电脑上安装了PowerPoint,因为Interop依赖于实际的Office应用程序。二是,...

    精彩编程与编程技巧-使用VB获得一页的HTML代码...

    - **知识点**: `createTextRange` 方法创建了一个 `TextRange` 对象,这个对象可以用来选取文档的一部分,并提供了一些有用的方法和属性,比如 `htmlText` 属性可以获取选中文本的HTML表示形式。 4. **变量声明与...

    基于WPF的richtextbox控件,按格式导入导出word文档内容

    Word文档的样式包括字体、字号、颜色、对齐方式等,这些都需要在导入和导出过程中正确映射到richtextbox的TextRange对象或FlowDocument的Block对象上。例如,我们可以创建一个样式映射表,将Word文档的样式ID与...

Global site tag (gtag.js) - Google Analytics