需求描述:正文有五个段落,现在需要判断用户是否选中了相应的段落,代码如下
<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、不只是IE不兼容containsNode的问题,关于containsNode的问题,IE有contains方法;
2、低版本IE不支持window.getSelection(),要用document.selection这个对象,但这个对象与window.getSelection()获取的对象类型不同;
3、推荐使用:rangy