已补全 IE6,IE7,IE8下使用Javascript记录光标选中范围( 二 )


代码如下
复制代码 代码如下:
head
script
function mark() {
var selection=document.selection.createRange();
if(selection.text.length==0){
return;
}
var textLength=event.srcElement.innerText.length;
var oldSelectionParent=selection.parentElement();
do{
selection.moveEnd("character",1);
}while(selection.parentElement()==oldSelectionParent);
selection.moveEnd("character",-1);
alert(textLength - selection.text.length);
}
function load(){
document.body.onmouseup=mark;
//document.body.onmousedown=mark;
}
/script
/head
body onload="load()"
div 飞 a a a a 飞飞飞飞飞a飞 a a a /div
/body

原理就是利用在一个节点内部,不断偏移1个字符,到底部或者顶部,计算偏移量的方法,因为对于单个元素内的热区,他的parentElement()返回就是他自己,如果跨多个节点,之后,返回的parentNode就是他自己的父节点了,可以通过这个变化,判断,是否移动到该节点文本的尽头 。^_^这样就可以计算偏移量了




ok,总结,通过htmlText的属性可以解决多节点选中热区的定位问题,对于单节点内部重复字符,可以通过文中最后一部分代码解决,这样在IE下,记录光标选中位置,和复现的方法就完美了^_^


============================================

去kissy群问了下,原来承玉已经做过全兼容的取位置的代码,链接如下
http://www.jb51.net/article/28120.htm
代码:http://lite-ext.googlecode.com/svn/trunk/lite-ext/playground/range/ie.html
您可能感兴趣的文章:javascript仿百度输入框提示自动下拉补全JSPajax实现输入框自动补全功能 实例代码js自动闭合html标签(自动补全html标记)JS数组排序方法实例分析javascript数组去重方法分析JavaScript常见的五种数组去重的方式javascript中数组(Array)对象和字符串(String)对象的常用方法总结JavaScript利用正则表达式替换字符串中的内容JS经典正则表达式笔试题汇总Ajax遍历jSon后对每一条数据进行相应的修改和删除(代码分享)遍历js中对象的属性和值的实例JS限制条件补全问题实例分析

推荐阅读