Creating ranges
See http://devdocs.io/dom/document/createrange
var range = document.createRange()
Methods
See http://devdocs.io/dom/range
range
.setStart(startNode, startOffset)
.setEnd(endNode, endOffset)
.setStartBefore(node)
.setStartAfter(node)
.setEndBefore(node)
.setEndAfter(node)
.selectNode(node)
.selectNodeContents(node)
Collapsing
range
.collapse() // to end (a single point)
.collapse(true) // to start (a single point)
.collapsed // true | false
Operations
range
.cloneContents() // copy => DocumentFragment
.extractContents() // cut => DocumentFragment
.deleteContents() // delete
.insertNode(node)
Etc
range
.toString()
Read-only attributes
range
.collapsed // true/false
.startContainer // Node
.startOffset
.endContainer // Node
.endOffset
.commonAncestorContainer // closest of start and end containers