Selection
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
Selection ãªãã¸ã§ã¯ãã¯ãã¦ã¼ã¶ã¼ã鏿ããããã¹ãã®ç¯å²ãã¾ãã¯ãã£ã¬ããã®ç¾å¨ã®ä½ç½®ã表ãã¾ããæ¤æ»ãæä½ã®ããã« Selection ãªãã¸ã§ã¯ããåå¾ããã«ã¯ã window.getSelection() ãå¼ã³åºãã¦ãã ããã
ã¦ã¼ã¶ã¼ã¯ãå·¦ããå³ï¼ææ¸é ï¼ã¾ãã¯å³ããå·¦ï¼ææ¸ã¨éé ï¼ã«é¸æãããã¨ãã§ãã¾ããã¢ã³ã«ã¼ (anchor) ã¯ã¦ã¼ã¶ã¼ã鏿ãéå§ããå ´æããã©ã¼ã«ã¹ (focus) ã¯ã¦ã¼ã¶ã¼ã鏿ãçµäºããå ´æã§ããããã¹ã¯ããããã¦ã¹ã§é¸æããå ´åãã¢ã³ã«ã¼ã¯ãã¦ã¹ãã¿ã³ãæ¼ããå ´æã«ç½®ããããã©ã¼ã«ã¹ã¯ãã¦ã¹ãã¿ã³ãé¢ããå ´æã«ç½®ããã¾ãã
ã¡ã¢: ã¢ã³ã«ã¼ã¨ãã©ã¼ã«ã¹ã¯ã鏿ç¯å²ã®éå§ä½ç½®ã¨çµäºä½ç½®ã¨æ··åããªãããã«ãã¾ããããã¢ã³ã«ã¼ã¯ãã©ã¼ã«ã¹ã®åã«ç½®ããããã¨ãããã°ãã®éãããã é¸æã®æ¹åã«ãã£ã¦ç°ãªãã¾ãã
ããããã£
Selection.anchorNodeèªåå°ç¨-
鏿ç¯å²ãéå§ãã
Nodeãè¿ãã¾ãã鏿ç¯å²ãææ¸å ã«åå¨ããªãå ´åï¼ä¾ï¼ã¯ãªãã¯ãããªãã£ã iframeï¼ã«ã¯nullãè¿ããã¨ãããã¾ãã Selection.anchorOffsetèªåå°ç¨-
鏿é¨åã®ã¢ã³ã«ã¼ã®
anchorNodeå ã§ã®ãªãã»ããã表ãå¤ãè¿ãã¾ããanchorNodeãããã¹ããã¼ãã§ãã£ãå ´åãããã¯ã¢ã³ã«ã¼ã«å è¡ãã anchorNode å ã®æåæ°ã§ããanchorNodeãè¦ç´ ã§ãã£ãå ´åãããã¯ã¢ã³ã«ã¼ã«å è¡ããanchorNodeã®åãã¼ãã®æ°ã§ãã Selection.focusNodeèªåå°ç¨-
鏿ç¯å²ãçµäºãã
Nodeãè¿ãã¾ãã鏿ç¯å²ãææ¸å ã«åå¨ããªãå ´åï¼ä¾ãã°ãã¯ãªãã¯ãããªãã£ãiframeå ã®å ´åï¼ã«ã¯nullãè¿ããã¨ãããã¾ãã Selection.focusOffsetèªåå°ç¨-
鏿é¨åã®ã¢ã³ã«ã¼ã®
focusNodeå ã§ã®ãªãã»ããã表ãå¤ãè¿ãã¾ããfocusNodeãããã¹ãã§ãã£ãå ´åãããã¯focusNodeå ã§ãã©ã¼ã«ã¹ã«å è¡ããæåæ°ã§ããfocusNodeãè¦ç´ ã§ãã£ãå ´åããã©ã¼ã«ã¹ã®åã«ããfocusNodeã®åãã¼ãã®æ°ã表ãã¾ãã Selection.isCollapsedèªåå°ç¨-
鏿ç¯å²ã®å§ç¹ã¨çµç¹ãåãä½ç½®ã«ãããã©ããã示ãè«çå¤ãè¿ãã¾ãã
Selection.rangeCountèªåå°ç¨-
鏿ç¯å²ã«å«ã¾ããç¯å²ã®æ°ãè¿ãã¾ãã
Selection.typeèªåå°ç¨-
ç¾å¨ã®é¸æé¨åã®åãè¨è¿°ããæååãè¿ãã¾ãã
ã¡ã½ãã
Selection.addRange()-
Rangeãªãã¸ã§ã¯ãã鏿ç¯å²ã«è¿½å ãã¾ãã Selection.collapse()-
ç¾å¨ã®é¸æç¯å²ããã®ç¹ã¾ã§æãããã¿ã¾ãã
Selection.collapseToEnd()-
鏿ç¯å²ãçµç«¯ã¾ã§æãããã¿ã¾ãã
Selection.collapseToStart()-
鏿ç¯å²ãå é ã¾ã§æãããã¿ã¾ãã
Selection.containsNode()-
ãããã¼ãã鏿ç¯å²ã«å«ã¾ãããã©ããã示ãã¾ãã
Selection.deleteFromDocument()-
鏿é¨åã®å å®¹ãææ¸ããåé¤ãã¾ãã
Selection.extend()-
鏿ç¯å²ã®ãã©ã¼ã«ã¹ããã®ç¹ã«ç§»åãããã
Selection.getRangeAt()-
ç¾å¨é¸æããã¦ããç¯å²ã®ãã¡ã®ä¸ã¤ã表ã
Rangeãªãã¸ã§ã¯ããè¿ãã¾ãã Selection.modify()-
ç¾å¨ã®é¸æç¯å²ã夿´ãã¾ãã
Selection.removeRange()-
鏿ç¯å²ããç¯å²ãåé¤ãã¾ãã
Selection.removeAllRanges()-
鏿ç¯å²ãããã¹ã¦ã®ç¯å²ãåé¤ãã¾ãã
Selection.selectAllChildren()-
æå®ããããã¼ãã®ãã¹ã¦ã®åãã¼ãã鏿ç¯å²ã«è¿½å ãã¾ãã
Selection.setBaseAndExtent()-
æå®ãã 2 ã¤ã® DOM ãã¼ãã®ãã¹ã¦ã¾ãã¯ä¸é¨ãããã³ãããã®éã«ããã³ã³ãã³ããå«ãç¯å²ã鏿ç¯å²ã«è¨å®ãã¾ãã
Selection.toString()-
鏿ãªãã¸ã§ã¯ããç¾å¨è¡¨ç¾ãã¦ããæååãããªãã¡ç¾å¨é¸æããã¦ããæååãè¿ãã¾ãã
ã¡ã¢
>鏿ç¯å²ã®æåå表ç¾
Selection.toString() ã¡ã½ãããå¼ã³åºãã¨ã鏿ç¯å²ã«å«ã¾ããããã¹ããªã©ãè¿ããã¨ãã§ãã¾ãã
const selObj = window.getSelection();
window.alert(selObj);
ãªãã鏿ãªãã¸ã§ã¯ãã window.alert ã®å¼æ°ã¨ãã¦ä½¿ç¨ããã¨ããã®ãªãã¸ã§ã¯ãã® toString ã¡ã½ãããå¼ã³åºããã¾ãã
鏿ç¯å²ã«è¤æ°ã®ç¯å²ãããå ´å
鏿ãªãã¸ã§ã¯ãã¯ãã¦ã¼ã¶ã¼ã鏿ããRangeã表ãã¾ããé常ã1ã¤ã®ç¯å²ã®ã¿ãä¿æãã以ä¸ã®ããã«ã¢ã¯ã»ã¹ãã¾ãã
const selObj = window.getSelection();
const range = selObj.getRangeAt(0);
selObj㯠Selection ãªãã¸ã§ã¯ãrangeã¯Rangeãªãã¸ã§ã¯ã
鏿 API 仿§æ¸ã®ã¡ã¢ã«ããããã«ã鏿 API ã¯å½å Netscape 社ã«ãã£ã¦ä½æãããè¤æ°ã®ç¯å²ã許容ãã¦ãã¾ããï¼ä¾ãã° <table> ããåã鏿ã§ããããã«ããï¼ããããã Gecko 以å¤ã®ãã©ã¦ã¶ã¼ã¯è¤æ°ã®ç¯å²ãå®è£
ãã¦ãããã仿§ã§ã鏿ç¯å²ã¯å¸¸ã«ä¸ã¤ã§ãããã¨ãè¦æ±ããã¦ãã¾ãã
鏿ã¨å ¥åã®ãã©ã¼ã«ã¹
鏿ã¨å
¥åãã©ã¼ã«ã¹ï¼Document.activeElement ã§ç¤ºãããï¼ã«ã¯ããã©ã¦ã¶ã¼ã«ãã£ã¦ç°ãªãè¤éãªé¢ä¿ãããã¾ãããã©ã¦ã¶ã¼éã®äºææ§ã®ããã³ã¼ãã§ã¯ãããããå¥åã«æ±ãæ¹ãããã§ãããã
Safari 㨠Chrome ã¯ï¼Firefox ã¨ç°ãªãï¼ç¾å¨ãããã°ã©ã ã§é¸æç¯å²ã夿´ããå ´åã鏿ç¯å²ãå«ãè¦ç´ ã«ãã©ã¼ã«ã¹ãå½ã¦ã¾ããå°æ¥çã«ã¯å¤æ´ãããå¯è½æ§ãããã¾ãï¼W3C bug 14383 㨠WebKit bug 38696 ãåç §ãã¦ä¸ããï¼ã
ç·¨éãã¹ãã®ãã©ã¼ã«ã¹å¤æ´ã«é¢ãã鏿 API ã®æå
鏿 API ã«ã¯ãç¹å®ã®ã¡ã½ãããå¼ã°ããå¾ã«ç·¨éãã¹ãã®ãã©ã¼ã«ã¹ã®åä½ãã©ã®ããã«å¤ããããå¶å¾¡ããå ±éã®åä½ï¼ã¤ã¾ãããã©ã¦ã¶ã¼éã§å ±æãããï¼ãããã¾ãã
ãã®åä½ã¯æ¬¡ã®ã¨ããã§ãã
- ç·¨éä¸ã®ãã¹ãã¯ãç´åã®é¸æããã®å¤ã«ãã£ãå ´åããã©ã¼ã«ã¹ãå¾ããã¨ãã§ãã¾ãã
- 鏿 API ã®ã¡ã½ãããå¼ã³åºãããç·¨éãã¹ãå ã®é¸æç¯å²ã«æ°ããªé¸æç¯å²ãçºçãã¾ãã
- ãã®å¾ããã©ã¼ã«ã¹ã¯ç·¨éãã¹ãã«ç§»ãã¾ãã
ã¡ã¢:
鏿 API ã®ã¡ã½ããã¯ç·¨éãã¹ãã«ã®ã¿ãã©ã¼ã«ã¹ãç§»åã§ããä»ã®ãã©ã¼ã«ã¹å¯è½ãªè¦ç´ ã«ã¯ç§»åã§ãã¾ããï¼ä¾: <a>ï¼ã
ä¸è¨ã®åä½ã¯ã以ä¸ã®ã¡ã½ããã使ç¨ãã¦é¸æãããå ´åã«ãé©ç¨ããã¾ãã
Selection.collapse()Selection.collapseToStart()Selection.collapseToEnd()Selection.extend()Selection.selectAllChildren()Selection.addRange()Selection.setBaseAndExtent()
ã¾ãã以ä¸ã®ã¡ã½ããã使ç¨ã㦠Range ã夿´ããå ´åãåæ§ã§ãã
ç¨èªé
ãã®åéã§ä½¿ç¨ããããã®ä»ã®éè¦ãªç¨èªã§ãã
- ã¢ã³ã«ã¼
-
鏿ç¯å²ã®ã¢ã³ã«ã¼ã¯ã鏿ç¯å²ã®å§ç¹ã§ãããã¦ã¹ã§é¸æããå ´åãã¢ã³ã«ã¼ã¯ææ¸å ã§æåã«ãã¦ã¹ãã¿ã³ãæ¼ãããä½ç½®ã¨ãªãã¾ããã¦ã¼ã¶ã¼ããã¦ã¹ããã¼ãã¼ãã使ç¨ãã¦é¸æç¯å²ã夿´ãã¦ããã¢ã³ã«ã¼ã¯ç§»åãã¾ããã
- ç·¨éãã¹ã
-
ç·¨éå¯è½ãªè¦ç´ ï¼ä¾ãã°ã
contenteditableãè¨å®ããã HTML è¦ç´ ãã¾ãã¯designModeãæå¹ã«ãªã£ã¦ããææ¸ã® HTML åè¦ç´ ãªã©ï¼ã - 鏿ãã©ã¼ã«ã¹
-
鏿ç¯å²ã® ãã©ã¼ã«ã¹ ã¯ã鏿ç¯å²ã®çµç¹ã§ãããã¦ã¹ã§é¸æããå ´åããã©ã¼ã«ã¹ã¯ææ¸å ã§ãã¦ã¹ãã¿ã³ãé¢ãããä½ç½®ã«ããã¾ããã¦ã¼ã¶ã¼ããã¦ã¹ããã¼ãã¼ãã使ç¨ãã¦é¸æç¯å²ã夿´ããã¨ããã©ã¼ã«ã¹ã¯ç§»åãã鏿ç¯å²ã®çµç¹ã«ãªãã¾ãã
ã¡ã¢: ããã¯ã
document.activeElementãè¿ããããªãææ¸ã®ãã©ã¼ã«ã¹ãããè¦ç´ ã¨åããã®ã§ã¯ããã¾ããã - ç¯å²
-
ç¯å²ã¨ã¯ãææ¸å ã®é£ç¶ããé¨åã®ãã¨ã§ããç¯å²ã«ã¯ããã¼ãå ¨ä½ããã¼ãã®ä¸é¨ï¼ããã¹ããã¼ãã®ä¸é¨ãªã©ï¼ãå«ãããã¨ãã§ãã¾ããé常ãã¦ã¼ã¶ã¼ã¯ä¸åº¦ã«ä¸ã¤ã®ç¯å²ãã鏿ãã¾ããããã¦ã¼ã¶ã¼ãè¤æ°ã®ç¯å²ã鏿ãããã¨ãå¯è½ã§ã (ä¾: Control ãã¼ã使ç¨ãããªã©)ãç¯å²ã¯
rangeãªãã¸ã§ã¯ãã¨ãã¦é¸æç¯å²ããåå¾ãããã¨ãã§ãã¾ããç¯å²ãªãã¸ã§ã¯ã㯠DOM çµç±ã§ä½æãããã¨ãã§ããããã°ã©ã ã«ãã£ã¦é¸æç¯å²ã«è¿½å ãããåé¤ããããããã¨ãã§ãã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| Selection API > # selection-interface > |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
Window.getSelection,Document.getSelection,Range- 鏿é¢é£ã¤ãã³ã:
selectionchangeããã³selectstart - HTML ã® input ã¯ã鏿ç¯å²ãæä½ããããã®ãããã·ã³ãã«ãªãã«ãã¼ API ãæä¾ãã¦ãã¾ããï¼
HTMLInputElement.setSelectionRange()ãåç §ï¼ Document.activeElement,HTMLElement.focus,HTMLElement.blur