Javascript DOM.Selection的AnchoroOffset属性

Javascript DOM.Selection的AnchoroOffset属性,javascript,dom,selection,Javascript,Dom,Selection,这个链接中的信息准确吗 根据这份文件: 主持人偏移: 返回所选内容的锚定在锚定节点内偏移的字符数 在FireFox的实验中,这个定义似乎并不总是正确的。有时,偏移量属性似乎表示一定数量的子节点。根据初步测试,以下代码有效: var sel = window.getSelection() ; var points = new Array( 0, 0 ) ; var offset = new Array( sel.anchorOffset, sel.focusOffset ) ; var node

这个链接中的信息准确吗

根据这份文件:

主持人偏移: 返回所选内容的锚定在锚定节点内偏移的字符数

在FireFox的实验中,这个定义似乎并不总是正确的。有时,偏移量属性似乎表示一定数量的子节点。根据初步测试,以下代码有效:

var sel = window.getSelection() ;
var points = new Array( 0, 0 ) ;
var offset = new Array( sel.anchorOffset, sel.focusOffset ) ;
var nodes = new Array( sel.anchorNode, sel.focusNode ) ;

if ( isText )
    points = offset ;

for ( j = 0 ; j < 2 && ! isText ; j++ ) {
    var kids = nodes[j].childNodes ;
    for ( var i = 0 ; i < offset[j] ; i++ )
        points[j] += kids[i].textContent.length ;
    }
var sel=window.getSelection();
变量点=新数组(0,0);
var偏移=新阵列(sel.anchorOffset,sel.FOCUSSOFFSET);
var节点=新数组(sel.anchorNode,sel.focusNode);
if(isText)
点=偏移量;
对于(j=0;j<2&&!isText;j++){
var kids=nodes[j].childNodes;
对于(var i=0;i
首先,还有其他人有这种经历吗?其次,我仍在尝试寻找一种可靠的方法来确定isText的值


在某些方面,这篇文章部分是一个问题,部分是一个答案。希望评论能反映新的细节。

MDN的定义是错误的[UDPATE:我现在已经更正了MDN]
anchorOffset
anchorNode
(和
focusNode
focusOffset
)的工作方式与边界类似:偏移量是文本节点(文本、字符数据和注释节点)内的字符数,或者是所有其他节点类型中选择锚点之前的
anchorNode
的子节点数。实际上,正如您所观察到的,选择边界并不总是在文本节点内。一个明显的例子是,插入符号位于两个相邻图像之间(由管道字符表示的插入符号):


isText
应该做什么?谢谢您的关照。
<div contenteditable="true"><img src="1.png">|<img src="2.png"></div>
function isCharacterDataNode(node) {
    var t = node.nodeType;
    return t == 3 || t == 4 || t == 8 ; // Text, CDataSection or Comment
}