>웹 프론트엔드 >JS 튜토리얼 >텍스트 content_javascript 기술 처리를 위한 TextRange 객체 적용 예

텍스트 content_javascript 기술 처리를 위한 TextRange 객체 적용 예

WBOY
WBOY원래의
2016-05-16 16:40:571289검색

사용자 요청자와 TextRange 개체 간의 연결로 인해 JavaScript 개체의 텍스트 부분을 처리하는 데 사용되는 개체입니다.

TextRange는 HTML 요소에서 텍스트를 표현하는 데 사용되는 개체입니다. 일반적으로 이 개체는 자주 사용되지 않지만 IE4.0에서는 이미 제공됩니다. 그러나 TextRange에서 제공하는 호출 메서드는 상대적으로 모호합니다. 그렇다면 이를 통해 무엇을 할 수 있을까요?
TextRange의 전통적인 사용은 사용자가 웹 페이지에서 마우스로 원을 그리며 이동하는 텍스트 콘텐츠(예: 변경, 삭제, 추가 등)를 조작하는 것입니다. 그러나 일반적인 용도는 웹 페이지에서 텍스트를 찾고(비교적 간단함) 입력 상자 커서의 위치를 ​​가져오는 것입니다. 후자는 입력을 제한하는 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으로 문의하세요.