Selection
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015ë 7ì.
* Some parts of this feature may have varying levels of support.
Selection ê°ì²´ë ì¬ì©ìê° ì íí í
ì¤í¸ ë²ì ëë íì¬ ìºë¿ì ìì¹ë¥¼ ëíë
ëë¤.
ê° documentë ê³ ì í Selection ê°ì²´ì ì°ê²°ëë©°, ì´ ê°ì²´ë document.getSelection() ëë window.getSelection()ì íµí´ ê°ì ¸ì¨ ë¤ì íì¸íê±°ë ìì í ì ììµëë¤.
ì¬ì©ìë ì¼ìª½ìì ì¤ë¥¸ìª½(문ì ììëë¡) í¹ì ì¤ë¥¸ìª½ìì ì¼ìª½(문ì ììì ë°ë)ì¼ë¡ ì íì ë§ë¤ ì ììµëë¤. ì íìì ìµì»¤ë ì¬ì©ìê° ì íì ììí ìì¹ì´ê³ , í¬ì»¤ì¤ë ì¬ì©ìê° ì íì ëë¸ ìì¹ì ëë¤. ì를 ë¤ì´ ë°ì¤í¬í± ë§ì°ì¤ë¡ í ì¤í¸ë¥¼ ëëê·¸íì¬ ì ííë©´, ë§ì°ì¤ ë²í¼ì ì²ì ë른 ìì¹ê° ìµì»¤ì´ê³ , ë²í¼ì ëì ìì¹ê° í¬ì»¤ì¤ê° ë©ëë¤.
ì°¸ê³ : ìµì»¤ì í¬ì»¤ì¤ë ì íì ììì ê³¼ ëì ê³¼ í¼ëí´ìë ì ë©ëë¤. ì í ë°©í¥ì ë°ë¼ ìµì»¤ê° í¬ì»¤ì¤ ìì ì¬ ìë ìê³ , ë°ëë¡ í¬ì»¤ì¤ê° ìµì»¤ ìì ì¬ ìë ììµëë¤.
ì¸ì¤í´ì¤ ìì±
Selection.anchorNodeì½ê¸° ì ì©-
ì í ììì´ ììëë
Node를 ë°íí©ëë¤. 문ììì í ë²ë ì íì´ ì´ë£¨ì´ì§ ì ì´ ìë¤ë©´(ì: í´ë¦ëì§ ìì iframe ì)nullì ë°íí ì ììµëë¤. Selection.anchorOffsetì½ê¸° ì ì©-
ì í ììì ìµì»¤(anchor)ê° ìì¹í
anchorNodeë´ììì ì¤íì ì ëíë´ë ì«ì를 ë°íí©ëë¤.anchorNodeê° í ì¤í¸ ë ¸ëì¸ ê²½ì°ìë ìµì»¤ ìì ìì¹í 문ì ì를 ì미íë©°,anchorNodeê° ìì ë ¸ëì¸ ê²½ì°ìë ìµì»¤ ìì ìì¹í ìì ë ¸ëì ì를 ì미í©ëë¤. Selection.directionì½ê¸° ì ì©-
íì¬ ì í ììì ë°©í¥ì ì¤ëª íë 문ìì´ì ë°íí©ëë¤.
Selection.focusNodeì½ê¸° ì ì©-
ì í ììì´ ëëë
Node를 ë°íí©ëë¤. 문ììì í ë²ë ì íì´ ì´ë£¨ì´ì§ ì ì´ ìë¤ë©´(ì: í´ë¦ëì§ ìì iframe ì)nullì ë°íí ì ììµëë¤. Selection.focusOffsetì½ê¸° ì ì©-
ì í ììì í¬ì»¤ì¤ê° ìì¹í
focusNodeë´ììì ì¤íì ì ëíë´ë ì«ì를 ë°íí©ëë¤.focusNodeê° í ì¤í¸ ë ¸ëì¸ ê²½ì°ìë í¬ì»¤ì¤ ìì ìì¹í 문ì ì를 ì미íë©°,focusNodeê° ìì ë ¸ëì¸ ê²½ì°ìë í¬ì»¤ì¤ ìì ìì¹í ìì ë ¸ëì ì를 ì미í©ëë¤. Selection.isCollapsedì½ê¸° ì ì©-
ì í ììì ìì ì§ì ê³¼ ë ì§ì ì´ ëì¼í ìì¹ì ìëì§ë¥¼ ëíë´ë ë¶ë¦¬ì¸ì ë°íí©ëë¤.
Selection.rangeCountì½ê¸° ì ì©-
ì í ììì í¬í¨ë ë²ìì ê°ì를 ë°íí©ëë¤.
Selection.typeì½ê¸° ì ì©-
íì¬ ì í ììì ì íì ì¤ëª íë 문ìì´ì ë°íí©ëë¤.
ì¸ì¤í´ì¤ ë©ìë
Selection.addRange()-
ì í ììì ì¶ê°í
Rangeê°ì²´ë¥¼ ì§ì í©ëë¤. Selection.collapse()-
íì¬ ì í ììì ë¨ì¼ ì§ì ì¼ë¡ ì¶ìí©ëë¤.
Selection.collapseToEnd()-
ì í ììì ë§ì§ë§ ë²ìì ë ì§ì ì¼ë¡ ì¶ìí©ëë¤.
Selection.collapseToStart()-
ì í ììì 첫 ë²ì§¸ ë²ìì ìì ì§ì ì¼ë¡ ì¶ìí©ëë¤.
Selection.containsNode()-
í¹ì ë ¸ëê° ì í ììì ì¼ë¶ì¸ì§ ì¬ë¶ë¥¼ ëíë ëë¤.
Selection.deleteFromDocument()-
ì íë ì½í ì¸ ë¥¼ 문ììì ìì í©ëë¤.
Selection.empty()-
ì í ìììì 모ë ë²ì를 ì ê±°íì¬ ì무ê²ë ì íëì§ ìì ìíë¡ ë§ëëë¤. ì´ë
anchorNodeìfocusNodeìì±ìnullì´ ë©ëë¤. Selection.extend()-
ì í ììì í¬ì»¤ì¤ë¥¼ ì§ì í ìì¹ë¡ ì´ëí©ëë¤.
Selection.getComposedRanges()-
ì í ììì ëíë´ë
StaticRangeê°ì²´ ë°°ì´ì ë°íí©ëë¤. ì´ ë°°ì´ì ê° ììë Shadow DOM ê²½ê³ë¥¼ ëì ì ìë ì í ììì ííí©ëë¤. Selection.getRangeAt()-
íì¬ ì íë ë²ì ì¤ íë를 ëíë´ë
Rangeê°ì²´ë¥¼ ë°íí©ëë¤. Selection.modify()-
íì¬ ì í ììì ë³ê²½í©ëë¤.
Selection.removeRange()-
ì í ìììì í¹ì ë²ì를 ì ê±°í©ëë¤.
Selection.removeAllRanges()-
ì í ìììì 모ë ë²ì를 ì ê±°í©ëë¤.
Selection.selectAllChildren()-
ì§ì í ë ¸ëì 모ë ìì ë ¸ë를 ì í ììì ì¶ê°í©ëë¤.
Selection.setBaseAndExtent()-
ì í ììì ë ê°ì ì§ì ë DOM ë ¸ëì ê·¸ ì¬ì´ì ìì¹í 모ë ì½í ì¸ ë¥¼ í¬í¨íë ë²ìë¡ ì¤ì í©ëë¤.
Selection.setPosition()-
íì¬ ì í ììì ë¨ì¼ ì§ì ì¼ë¡ ì¶ìí©ëë¤.
Selection.toString()-
ì í ê°ì²´ê° íì¬ íííë 문ìì´, ì¦ íì¬ ì íë í ì¤í¸ë¥¼ ë°íí©ëë¤.
ì°¸ê³
>ì í ììì 문ìì´ íí
Selection.toString() ë©ìë를 í¸ì¶íë©´ ì íë ììì í¬í¨ë í
ì¤í¸ë¥¼ ë°íí©ëë¤. ììë ë¤ìê³¼ ê°ìµëë¤.
const selObj = window.getSelection();
window.alert(selObj);
ì í ê°ì²´ë¥¼ window.alertì ì¸ìë¡ ì ë¬íë©´, í´ë¹ ê°ì²´ì toString ë©ìëê° í¸ì¶ëë¤ë ì ì ì ìí´ì¼ í©ëë¤.
ì¬ë¬ ê°ì ë²ì를 ê°ì§ë ì í ìì
ì í ê°ì²´ë ì¬ì©ìê° ì íí Rangeë¤ì ëíë
ëë¤. ì¼ë°ì ì¼ë¡ë ë¨ì¼ ë²ìë§ í¬í¨íë©°, ë¤ìê³¼ ê°ì´ ì ê·¼í ì ììµëë¤.
const selObj = window.getSelection();
const range = selObj.getRangeAt(0);
selObjë Selection ê°ì²´ì ëë¤.rangeëRangeê°ì²´ì ëë¤.
Selection API ëª
ì¸ìì ì¸ê¸íë¯ì´, Selection APIë ìë Netscapeì ìí´ ë§ë¤ì´ì¡ì¼ë©° ì¬ë¬ ê°ì ë²ì를 íì©íìµëë¤. (ì를 ë¤ì´, <table>ì ì´ì ì¬ì©ìê° ì íí ì ìëë¡ í기 ìí¨ì´ììµëë¤.) ê·¸ë¬ë Gecko ì´ì¸ì ë¸ë¼ì°ì ë¤ì ë¤ì¤ ë²ì를 구ííì§ ììì¼ë©°, íì¬ ëª
ì¸ììë ì í ììì´ íì ë¨ì¼ ë²ìë§ ê°ì§ëë¡ ê·ì íê³ ììµëë¤.
ì í ììê³¼ ì ë ¥ í¬ì»¤ì¤
ì í ììê³¼ ì
ë ¥ í¬ì»¤ì¤(Document.activeElementë¡ íìë¨)ë ë¸ë¼ì°ì ë§ë¤ ë¤ë¥¸ ë³µì¡í ê´ê³ë¥¼ ê°ì§ê³ ììµëë¤. í¬ë¡ì¤ ë¸ë¼ì°ì í¸í ì½ë를 ìì±í ëë ì´ ëì ë³ëë¡ ë¤ë£¨ë ê²ì´ ë ì¢ìµëë¤.
Safariì Chromeì (Firefoxì ë¬ë¦¬) íì¬ ì í ììì íë¡ê·¸ëë° ë°©ìì¼ë¡ ìì í ë ì í ììì í¬í¨íë ììì í¬ì»¤ì¤ë¥¼ ë§ì¶¥ëë¤. ë¤ë§, ì´ë í¥í ë³ê²½ë ì ììµëë¤. (ê´ë ¨ ë´ì©ì W3C bug 14383ê³¼ WebKit bug 38696 ì°¸ê³ )
í¸ì§ í¸ì¤í¸ í¬ì»¤ì¤ ë³ê²½ê³¼ ê´ë ¨ë Selection APIì ëì
Selection APIë ê³µíµë ëì(ë¸ë¼ì°ì ê°ì ëì¼íê² ì ì©ëë ëì)ì ê°ì§ë©°, ì´ë í¹ì ë©ìëê° í¸ì¶ë ì´í í¸ì§ í¸ì¤í¸ì í¬ì»¤ì¤ ëìì´ ì´ë»ê² ë°ëëì§ë¥¼ ì ìí©ëë¤.
ëìì ë¤ìê³¼ ê°ìµëë¤.
- ì´ì ì í ììì´ í¸ì§ í¸ì¤í¸ ë°ê¹¥ì ììë¤ë©´, í¸ì§ í¸ì¤í¸ë í¬ì»¤ì¤ë¥¼ ì»ê² ë©ëë¤.
- Selection API ë©ìëê° í¸ì¶ëì´ ì í ë²ìê° í´ë¹ í¸ì§ í¸ì¤í¸ ìì ìë¡ê² ì¤ì ë©ëë¤.
- í¬ì»¤ì¤ë í¸ì§ í¸ì¤í¸ë¡ ì´ëí©ëë¤.
ì°¸ê³ :
Selection API ë©ìëë í¬ì»¤ì¤ë¥¼ í¸ì§ í¸ì¤í¸ë¡ë§ ì®ê¸¸ ì ìì¼ë©°, ë¤ë¥¸ í¬ì»¤ì¤ ê°ë¥í ìì(ì: <a>)ë¡ë ì´ëí ì ììµëë¤.
ì ëìì ë¤ì ë©ìë를 ì¬ì©íì¬ ìì±ë ì í ììì ì ì©ë©ëë¤.
Selection.collapse()Selection.collapseToStart()Selection.collapseToEnd()Selection.extend()Selection.selectAllChildren()Selection.addRange()Selection.setBaseAndExtent()
ê·¸ë¦¬ê³ ë¤ì ë©ìëë¤ì ì¬ì©íì¬ Range 를 ìì í ëìë ì ì©ë©ëë¤.
ì©ì´ ì¬ì
ì´ êµ¬íìì ì¬ì©ëë 주ì ì©ì´ë¤ì ëë¤.
- ìµì»¤
-
ì í ììì ìµì»¤ë ì íì ìì ì§ì ì ì미í©ëë¤. ë§ì°ì¤ë¥¼ ì´ì©í´ ì íí ë ìµì»¤ë 문ììì ë§ì°ì¤ ë²í¼ì ì²ì ëë ë ìì¹ê° ë©ëë¤. ì¬ì©ìê° ë§ì°ì¤ë í¤ë³´ëë¡ ì í ììì ë³ê²½íëë¼ë ìµì»¤ë ìì§ì´ì§ ììµëë¤.
- í¸ì§ í¸ì¤í¸
-
í¸ì§ ê°ë¥í ìì를 ì미í©ëë¤. (ì를 ë¤ì´,
contenteditableìì±ì´ ì¤ì ë HTML ììë,designModeê° íì±íë 문ìì HTML ìì ììê° í¸ì§ í¸ì¤í¸ì í´ë¹í©ëë¤.) - ì í ììì í¬ì»¤ì¤
-
ì í ììì í¬ì»¤ì¤ë ì íì ë ì§ì ì ì미í©ëë¤. ë§ì°ì¤ë¡ ì íí ë í¬ì»¤ì¤ë 문ììì ë§ì°ì¤ ë²í¼ì ëì ìì¹ê° ë©ëë¤. ì¬ì©ìê° ë§ì°ì¤ë í¤ë³´ë를 ì´ì©í´ ì í ììì ë³ê²½íë©´, í¬ì»¤ì¤ë ì´ëíë ì íì ë ë¶ë¶ì´ ë©ëë¤.
ì°¸ê³ : ì´ë
document.activeElementê° ë°ííë 문ìì í¬ì»¤ì¤ë ìììë ëì¼íì§ ììµëë¤. - ë²ì
-
ë²ìë 문ìì ì°ìë ì¼ë¶ë¥¼ ì미í©ëë¤. ë²ììë ì ì²´ ë ¸ëë¿ë§ ìëë¼ ë ¸ëì ì¼ë¶(ì: í ì¤í¸ ë ¸ëì ì¼ë¶)ë í¬í¨ë ì ììµëë¤. ì¼ë°ì ì¼ë¡ ì¬ì©ìë í ë²ì íëì ë²ìë§ ì ííì§ë§, 컨í¸ë¡¤ í¤ë¥¼ ì´ì©íë©´ ì¬ë¬ ë²ì를 ì íí ìë ììµëë¤. ì í ìììì ë²ì를 ê°ì ¸ì¤ë©´
Rangeê°ì²´ë¡ ë°íëë©°, Range ê°ì²´ë DOMì íµí´ ìì±íê±°ë íë¡ê·¸ëë° ë°©ìì¼ë¡ ì í ììì ì¶ê°íê±°ë ì ê±°í ìë ììµëë¤.
ëª ì¸ì
| Specification |
|---|
| Selection API > # selection-interface > |
ë¸ë¼ì°ì í¸íì±
ê°ì´ë³´ê¸°
Window.getSelection,Document.getSelection,Range- ì í ììê³¼ ê´ë ¨ë ì´ë²¤í¸ë
selectionchange,selectstart - HTML ì
ë ¥ ììë ì í ììì ë¤ë£¨ê¸° ìí ë ë¨ìí ë³´ì¡° API를 ì ê³µí©ëë¤ (ì:
HTMLInputElement.setSelectionRange()) Document.activeElement,HTMLElement.focus,HTMLElement.blur