首頁  >  文章  >  web前端  >  處理文字部分內容的TextRange物件應用實例_javascript技巧

處理文字部分內容的TextRange物件應用實例_javascript技巧

WBOY
WBOY原創
2016-05-16 16:40:571253瀏覽

因使用者要求方與TextRange物件結緣,用於處理JavaScript物件文字部分內容的一個物件。

TextRange是用來表現HTML元素中文字的對象,雖然我們平常不太常用這個對象,但它卻在IE4.0就已提供了。不過TextRange提供的呼叫方法卻都比較晦澀,那我們可以拿它做些什麼呢?
TextRange的傳統用途是對使用者在Web頁上以滑鼠圈選的文字內容的操作,例如變化、刪除、新增等。但其經典的用途卻是,在Web頁面中找出文字(這個比較簡單)和取得輸入框遊標的位置。其中後者有可以衍生出許多更有用的用途,例如:限制輸入的MaskTextBox,其核心技術點就是取得輸入框的遊標位置,然後使用正規表示式判斷輸入內容。還有我後面會介紹的"使用方向鍵在輸入框矩陣中自然的導航",核心技術點也是取得輸入框中的遊標位置。

取得輸入框中的遊標位置的整個程式碼其實很短,只是這些物件和方法不太常用而已。

Js代碼

<span style="font-size: medium;"><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></span>

這裡說一下使用這個GetCursorPsn()方法後,會為輸入框操作帶來的副作用。

對於輸入框

Html代碼

<span style="font-size: medium;"><input type="text" onkeydown="GetCursorPsn(this)"></span>

它將無法再使用Shift 左右這兩個方向鍵來選取文字;對於

Html代碼

<span style="font-size: medium;"><textarea onkeydown="GetCursorPsn(this)"></textarea></span>

,將無法再使用Shift 上下左右四個方向鍵來選取文字。因為程式碼在取得了目前遊標到文字的startPoint後,呼叫rng.collapse(false );會 改變文字框內文字的EditPoint。

1、滿足使用者要求程式碼片段,使用上下左右四個鍵實現文字方塊的跳轉,同時選擇其文字方塊內容,從而方便使用者修改,程式碼如下:

Js代碼

<span style="font-size: medium;">var range = $currentTextfield.createTextRange();//$currentTextfield为jQuery对象 

range.moveStart('character',0); 

range.select();</span>

以下是舶來的一片個人感覺還算不錯的關於TextRange的文章:

Html代碼

<!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 )&#63; 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>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn