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 相关文章推荐
javascript 验证日期的函数
Mar 18 Javascript
JavaScript动态创建div属性和样式示例代码
Oct 09 Javascript
jquery获取复选框被选中的值
Apr 10 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
Dec 14 Javascript
js限制input标签中只能输入中文
Jun 26 Javascript
浅谈jQuery为哪般去掉了浏览器检测
Aug 29 Javascript
JS闭包与延迟求值用法示例
Dec 22 Javascript
js实现无缝滚动图
Feb 22 Javascript
Bootstrap Table 删除和批量删除
Sep 22 Javascript
vue中$refs的用法及作用详解
Apr 24 Javascript
js数组去重的方法总结
Jan 18 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
Oct 28 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
漂亮但不安全的CTB
2006/10/09 PHP
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
php简单复制文件的方法
2016/05/09 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
微信小程序 JS动态修改样式的实现代码
2017/02/10 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
js实现电灯开关效果
2021/01/19 Javascript
Python操作列表的常用方法分享
2014/02/13 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Django中的ajax请求
2018/10/19 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
python中pyqtgraph知识点总结
2021/01/26 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
硕士研究生自我鉴定
2013/11/08 职场文书
面试后感谢信
2014/02/01 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
实习生求职自荐信
2014/02/07 职场文书
网站推广策划方案
2014/06/04 职场文书
校长新学期致辞
2015/07/30 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
24年收藏2000多部退役军用电台
2022/02/18 无线电