處理文本部分內容的TextRange對象應用執行個體,textrange應用執行個體

來源:互聯網
上載者:User

處理文本部分內容的TextRange對象應用執行個體,textrange應用執行個體

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

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

擷取輸入框中的游標位置的整個代碼其實很短,只是這些對象和方法不太常用而已。

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 )? 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>

createTextRange()方法在js中有什作用

主要是用來對一些文字物件進行操作.比如你有一大段文字,都在同一個P標籤內,但是你只希望通過JS改變其中的一小部分,這時就可以用createTextRange來建立Range對象操作文本.因為預設情況下文本只是文本,並不是對象,要想像操作對象那樣操作文本,只能是建立為Range對象.這是要操作的文本就具有了對象的功能和特性了.
 
javascript 中的textrange是什?

這個用的很少啊,載錄一段:TextRange對象是動態HTML(DHTML)的進階特性,使用它可以實現很多和文本有關的任務,例如搜尋和選擇文本,微軟官方:msdn.microsoft.com/zh-cn/library/ms535872(en-us,VS.85).aspx
參考資料:msdn.microsoft.com/zh-cn/library/ms535872(en-us,VS.85).aspx
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.