處理文字部分內容的TextRange物件應用實例_javascript技巧
因使用者要求方與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 )? 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>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

本文說明瞭如何使用源地圖通過將其映射回原始代碼來調試JAVASCRIPT。它討論了啟用源地圖,設置斷點以及使用Chrome DevTools和WebPack之類的工具。

如何在JavaScript中將具有相同ID的數組元素合併到一個對像中?在處理數據時,我們常常會遇到需要將具有相同ID�...

深入探討console.log輸出差異的根源本文將分析一段代碼中console.log函數輸出結果的差異,並解釋其背後的原因。 �...
