Javascript + 如何获取选择的父节点的索引 + IE 以外的浏览器

标签 javascript indexing selection parent browser

嗨,我想获取相对于所选文本的父节点的选择开始和结束索引。 我可以在 IE 中做到这一点。 然而,在其他浏览器(如 Firefox、Opera、Safari 和 Chrome)中,我能够访问所选文本的选择和索引。但我的要求是获取父节点的索引,而不是所选节点的索引。 我需要一个支持所有浏览器的解决方案 - Firefox、Opera、Safari 和 Chrome

    if (window.getSelection) { 
                     alert("Other browser");     
                     sel = window.getSelection();

                        if(sel != '') {
               //alert(sel.anchorNode.parentNode.nodeName);
             //alert(sel.anchorOffset);
             //alert(sel.focusNode.parentNode.nodeName);
             //alert(sel.focusOffset);                
 }
                    }    
        else if (document.selection) {   
                        txt = document.selection.createRange().text;
                        var range_all = document.body.createTextRange();
                        if (txt!='' )
                        {
                            // Finding start position
                         range = document.selection.createRange();
                            range.collapse(true); 

                         var startParentElement =  range.parentElement();                 

                            range_all.moveToElementText(startParentElement);
                            for (var sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start ++)
                                range_all.moveStart('character', 1);
                            range = document.selection.createRange();
                            range.collapse(false); 
                            range_all = document.body.createTextRange();

                         var endParentElement =  range.parentElement();                 
                                                 range_all.moveToElementText(endParentElement);
                            for (var sel_end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; sel_end ++)
                              range_all.moveStart('character', 1);
    alert("sel_start:" + sel_start);
                        alert("sel_end:" + sel_end);
    }}

最佳答案

QuirksMode 网站可以在这里为您提供帮助:http://www.quirksmode.org/dom/range_intro.html

您只需要学习如何在 IE 以外的浏览器中使用 range 对象即可。

关于Javascript + 如何获取选择的父节点的索引 + IE 以外的浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3281305/

相关文章:

javascript - node.js express jsonp 返回类型

javascript - 如何使用正则表达式从 javascript 中的日期字符串中删除时间戳

python - 找不到根据键翻译字符串的简单方法

Mysql 使用 IN 查询强制更新索引

python - 基于另一个数组提取部分数组的最有效方法

javascript - map : trigger a function on 'select'

Javascript、表单验证、获取 NaN

javascript - 如何取消选择 Monaco Editor 中的所有内容

java - 无法在 NavigationFilter 之后在 JTextField 上设置选择

javascript - 在文本选择之前/之后添加元素