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


Posted in Javascript onAugust 28, 2011

刚和同事讨论了一个很有趣的问题,有个idea,需要记录用户在页面选中的内容,在ff和ie9下有w3c的dom2级事件createRange,这里不再累赘。主要问题是在IE6,7,8只能通过createTextRange选中热区。假如我们知道用户选择开始元素和偏移量,以及结束元素以及偏移量,那么我们可以用下面的例子把用户选择的内容用js给标记起来

<head> 
<script> 
function mark() { 
var b= document.getElementById ("b"); 
var b1= document.getElementById ("b1"); 
var b2= document.getElementById ("b2"); 
var a1 = document.body.createTextRange(); 
a1.moveToElementText(b); 
a1.moveStart('character',17); 
var a2 = document.body.createTextRange(); 
a2.moveToElementText(b1); 
a2.moveEnd('character',-2); 
a1.setEndPoint ("EndToEnd",a2); 
a1.select(); 
}</script> 
</head> 
<body> 
<div id="b">The <b>contents</b> of the <i>source</i> element.</div> 
<div id="b1">The <b>contents</b> of the <i>source</i> element.</div> 
<div id="b2">The <b>contents</b> of the <i>source</i> element.</div> 
<button onclick="mark();">Mark</button> 
</body>

ok,从上面的代码,我们可以知道,在IE6,7,8下,需要关联多个元素的选择时候,我们需要创建两个textRange,一个是开始节点,以及偏移量,还有一个结束节点,以及偏移量,两个textRange用a1.setEndPoint关联

参考文档:http://help.dottoro.com/ljgbbkjf.php

Javascript 相关文章推荐
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
Jan 09 Javascript
动态显示可输入的字数提示还可以输入的字数
Apr 01 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
JS日期加减,日期运算代码
Nov 05 Javascript
JavaScript jquery及AJAX小结
Jan 24 Javascript
javascript禁止超链接跳转的方法
Feb 02 Javascript
使用JS读取XML文件的方法
Nov 25 Javascript
Vue+webpack项目基础配置教程
Feb 12 Javascript
动态加载、移除js/css文件的示例代码
Mar 20 Javascript
Node.js使用supervisor进行开发中调试的方法
Mar 26 Javascript
vue实现的请求服务器端API接口示例
May 25 Javascript
range 标准化之获取
Aug 28 #Javascript
dojo学习第一天 Tab选项卡 实现
Aug 28 #Javascript
js中设置元素class的三种方法小结
Aug 28 #Javascript
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
Aug 28 #Javascript
IE6、IE7中获取Button元素的值的bug说明
Aug 28 #Javascript
JavaScript 选中文字并响应获取的实现代码
Aug 28 #Javascript
js预载入和JavaScript Image()对象使用介绍
Aug 28 #Javascript
You might like
屏蔽浏览器缓存另类方法
2006/10/09 PHP
php SQL之where语句生成器
2009/03/24 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
jquery实现每个数字上都带进度条的幻灯片
2013/02/20 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
3种Jquery限制文本框只能输入数字字母的方法
2014/12/03 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
2016/10/19 Javascript
BootStrap中
2016/12/10 Javascript
Vue实现push数组并删除的例子
2019/11/01 Javascript
js实现自定义右键菜单
2020/05/18 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
Python open()文件处理使用介绍
2014/11/30 Python
利用Python获取操作系统信息实例
2016/09/02 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
10个Python小技巧你值得拥有
2018/09/29 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
详解Python文件修改的两种方式
2019/08/22 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
专升本个人自我评价
2013/12/22 职场文书
英文留学推荐信范文
2014/01/25 职场文书
教师师德工作总结2015
2015/07/22 职场文书
初中体育课教学反思
2016/02/16 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android