代码如下
复制代码 代码如下:
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限制条件补全问题实例分析
推荐阅读
- 华为ai音箱怎么播放全部歌曲
- 显示安全气囊故障是什么问题
- 京东分期付款为什么要付全款
- 兼容IE6的图片圆角边框CSS
- CSS 完美兼容IE6/IE7/FF的通用hack方法
- 针对firefox ie6 ie7 ie8的css样式hack
- css控制图片按等比例缩放实例兼容IE6/IE7/火狐/谷歌
- 让IE6支持HTML5元素的方法
- 信息网络安全的三个时代是什么
- ie-css3.htc 让IE6, 7, and 8也支持box-shadow
