因用户要求方与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>
分享到:
相关推荐
以下是TextRange对象使用方法的详细介绍: 属性和方法: 1. boundingHeight: 此属性用于获取TextRange对象绑定矩形区域的高度。通过它可以确定文本范围在页面上所占的空间大小。 2. boundingLeft: 获取TextRange...
### TextRange对象与Selection对象详解 #### 一、概述 在早期的Internet Explorer浏览器中,为了方便用户在网页上操作文本(例如复制、粘贴、查找等),开发了一套独特的对象模型来支持这些功能,其中两个核心对象...
尽管在现代浏览器中DOM Range对象更常见,但TextRange对象在处理特定的文本操作时仍然有价值,尤其是在兼容旧版IE浏览器的场景下。 TextRange对象提供了一系列的方法,如`select()`用于选取文本,`collapse()`用于...
【使用TextRange对象】 在网页开发中,大多数用户通常只需要使用之前提到的innerText/innerHTML和outerText/outerHTML属性及方法来操作文本内容。然而,对于更高级的文本处理,可以利用“TextRange”对象来实现。...
主要涉及到互联网软件开发的各个方面,包括JSP、UML、Web开发流程、域名结构、IP地址分类、WAIS链接、ASP.NET服务器控件、IIS系统管理、PHP语言控制结构、ASP.NET组件和模板、DHTML操作、TextRange对象以及ADO对象...
2. **TextRange对象**:在Internet Explorer中,不支持标准的Range对象,而是使用TextRange对象。`createTextRange()`方法创建TextRange对象,`getBookmark()`和`moveToBookmark(bookmark)`用于保存和恢复Range的...
47. parentTextEdit:获取文档层次中可用于创建包含原始对象的 TextRange 的容器对象。该属性控制 Select 元素的容器对象。 48. previousSibling:获取对此对象的上一个兄弟对象的引用。该属性控制 Select 元素的上...
PARENTTEXTEDIT 属性用于获取文档层次中可用于创建包含原始对象的 TextRange 的容器对象。 这些属性和方法可以帮助开发者更好地理解和使用 HTML table 标签,提高开发效率和质量。本篇文章总结了 HTML 中 table ...
3. **使用TextRange对象** 如果要对特定的文本范围进行操作,可以使用Word的`TextRange`对象。例如,选择一段文本并设置其缩进: ```vb Dim rng As Word.TextRange Set rng = doc.Range(Start:=1, End:=5) '选取...
- **TextRange对象**:在JavaScript中,可以使用`window.getSelection()`获取用户当前选中的文本,并通过TextRange对象进行操作。 - **字符串处理**:对高亮文本进行分析和处理,如查找关键词、翻译、复制到剪贴板...
2. **设置富文本格式**:通过TextRange对象,你可以选择FlowDocument的一部分并应用样式,如改变字体、大小、颜色等。 ```csharp TextRange textRange = new TextRange(flowDoc.ContentStart, flowDoc.ContentEnd); ...
- **说明**: 用于判断是否可以通过该对象创建一个TextRange对象,这在文本编辑应用中很常见。 **27. LANG (lang)** - **功能**: 设置或获取要使用的语言。 - **语法**: `lang: [language-code]` - **说明**: ...
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...
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...
对于每个文本框形状,我们获取其TextRange对象,从而可以访问和输出其中的文本内容。 然而,这个过程需要注意几个问题。一是,必须确保用户电脑上安装了PowerPoint,因为Interop依赖于实际的Office应用程序。二是,...
- **知识点**: `createTextRange` 方法创建了一个 `TextRange` 对象,这个对象可以用来选取文档的一部分,并提供了一些有用的方法和属性,比如 `htmlText` 属性可以获取选中文本的HTML表示形式。 4. **变量声明与...
Word文档的样式包括字体、字号、颜色、对齐方式等,这些都需要在导入和导出过程中正确映射到richtextbox的TextRange对象或FlowDocument的Block对象上。例如,我们可以创建一个样式映射表,将Word文档的样式ID与...