SYNCERのロゴ
アイキャッチ画像

CaretPosition.offset - オフセット

offsetは、CaretPositionのプロパティです。キャレット位置を表す、ノードの先頭からのオフセットを返します。

概要

名前
offset
所属
CaretPosition
IDL
readonly attribute unsigned long offset;
仕様書
https://drafts.csswg.org/cssom-view/#dom-caretposition-offset

説明

ノード(offsetNode)の先頭からのオフセット(文字数)を返す。

デモ

CaretPosition.offsetのデモです。クリックした位置のCaretPositionを取得して、プロパティを参照します。キャレット位置にはスタイルシートで赤色を付けています。

<!-- このコードは編集できます。 -->

<!DOCTYPE html>
<head>
<style>
body { word-break: break-all ; tab-size: 2 ; }
div#result { white-space: pre-wrap ; }

#caret {
	position: absolute ;
	background-color: red ;
	font-weight: 700 ;
	width: 4px ;
	height: 21px ;
}
</style>
</head>
<body>
<p>1234567890 1234567890</p>
<p>SYNCER SYNCER SYNCER</p>
<p>ABCDEFGHIJKLMNOPQRSTUVWXYZ</p>
<hr>
<div id="result"></div>
<span id="caret"></span>
<script>
document.body.onclick = function ( event ) {
	document.getElementById( "result" ).textContent = "" ;

	var x = event.clientX ;
	var y = event.clientY ;
	var caretPosition = document.caretPositionFromPoint( x, y ) ;

	console.log( caretPosition ) ;
	appendText( caretPosition + "\n" ) ;
	appendText( "offsetNode: " + caretPosition.offsetNode + "\n" ) ;
	appendText( "offsetNode.data: " + caretPosition.offsetNode.data + "\n" ) ;
	appendText( "offset: " + caretPosition.offset + "\n\n" ) ;

	var domRect = caretPosition.getClientRect() ;
	appendText( "getClientRect(): " + domRect + "\n" ) ;

	var caretElement = document.getElementById( "caret" ) ;
	caretElement.style.top = domRect.y + "px" ;
	caretElement.style.left = ( domRect.x - 2 ) + "px" ;
}

function appendText ( text ) {
	document.getElementById( "result" ).appendChild( document.createTextNode( text ) ) ;
}
</script>
</body>
</html>

サポート状況

ChromeFirefoxSafariEdgeIEOperaiOS SafariAndroid
× 20+××××××
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年10月16日 (月)
コンテンツを公開しました。