http://ioing.com/#docs-dom-input 页面最底部 Element.prototype.extendProperty("getSelectionRangeOffset", function (pos) { switch (this.nodeName) { case 'INPUT': case 'TEXTAREA': var offset = this.offset() var position = this.getSelectionRangePosition(pos) return offset = { left: offset.left + position.left, top: offset.top + position.top, height: position.height } break case 'HTMLAREA': var oWindow = this.ownerDocument.defaultView var oDocument = oWindow.document var selection = this.getOwnerSelection() var range = this.getSelectionRange(selection) var clonedRange, offset, rect, shadowCaret if ( range ) { range.collapse(false) if ( range.endOffset - 1 > 0 && range.endContainer !== this ) { clonedRange = range.cloneRange() clonedRange.setStart(range.endContainer, range.endOffset - 1) clonedRange.setEnd(range.endContainer, range.endOffset) rect = clonedRange.getBoundingClientRect() offset = { height: rect.height, left: rect.left + rect.width, top: rect.top } clonedRange.detach() } if ( !offset || (offset != null ? offset.height : void 0) === 0) { clonedRange = range.cloneRange() shadowCaret = oDocument.createTextNode("|") clonedRange.insertNode(shadowCaret) clonedRange.selectNode(shadowCaret) rect = clonedRange.getBoundingClientRect() offset = { height: rect.height, left: rect.left, top: rect.top } shadowCaret.remove() clonedRange.detach() } } offset.left += top.scrollX offset.top += top.scrollY return offset break } })
http://ioing.com/#docs-dom-input
页面最底部
Element.prototype.extendProperty("getSelectionRangeOffset", function (pos) {
})