搜索
javascript - 求containsNode()兼容ie的实现方法
大家讲道理
大家讲道理 2017-04-10 16:26:13
[JavaScript讨论组]

需求描述:正文有五个段落,现在需要判断用户是否选中了相应的段落,代码如下

<body>
    <p>第一段 大家好大家好大家好大家好大家好大家好大</p>
    <p>第二段 大家好大家好大家好大家好大家好大家好大</p>
    <p>第三段 大家好大家好大家好大家好大家好大家好大</p>
    <p>第四段 大家好大家好大家好大家好大家好大家好大</p>
    <p>第五段 大家好大家好大家好大家好大家好大家好大</p>

    <script>
        var para = document.getElementsByTagName('p');
        var result = [];
        document.onmouseup = function(){
            var selectText = window.getSelection();//获取选区对象,ie9+支持
            if(selectText.toString()){
                for (var i = 0;i<para.length;i++){
                    if(selectText.containsNode(para[i],true)){
                        result.push(i+1);//返回相应段落的序号
                    }
                }
                alert(result);
                result = [];//重新置空
            }
        }    
    </script>
</body>

当我选中如下内容时:

会弹出1,2,3,表示选中了第一二三段。

由于containsNode()方法不适用ie浏览器,现在写的代码在ie环境下就失效了。
紧急求助:一个兼容ie的containsNode()方法;或者能通过其他方法达到同样的效果,万分感谢!

如果上面的问题解决了,已经太太感谢您了,还有一个瑕疵的地方也请您多多指教一下。当鼠标双击选中如下部分时:

却会弹出1,2,这是为什么?

在线24小时等候答案,先提前谢谢各位了!

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
怪我咯

1、不只是IE不兼容containsNode的问题,关于containsNode的问题,IE有contains方法;
2、低版本IE不支持window.getSelection(),要用document.selection这个对象,但这个对象与window.getSelection()获取的对象类型不同;
3、推荐使用:rangy

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号