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 相关文章推荐
File文件控件,选中文件(图片,flash,视频)即立即预览显示
Apr 09 Javascript
单击复制文字兼容各浏览器的完美解决方案
Jul 04 Javascript
js实现在网页上简单显示时间的方法
Mar 02 Javascript
包含中国城市的javascript对象实例
Aug 03 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
表单元素值获取方式js及java方式的简单实例
Oct 15 Javascript
JS拉起或下载app的实现代码
Feb 22 Javascript
JS闭包可被利用的常见场景小结
Apr 09 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
vux-scroller实现移动端上拉加载功能过程解析
Oct 08 Javascript
javascript实现fetch请求返回的统一拦截
Dec 22 Javascript
VUE实现自身整体组件销毁的示例代码
Jan 13 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
解析yii数据库的增删查改
2013/06/20 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
2015/05/12 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
js的表单操作 简单计算器
2011/12/29 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
js实现动态创建的元素绑定事件
2016/07/19 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
使用Python横向合并excel文件的实例
2018/12/11 Python
pandas数据集的端到端处理
2019/02/18 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
2019史上最全Database工程师题库
2015/12/06 面试题
建筑设计学生的自我评价
2014/01/16 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
工作收入住址证明
2014/10/28 职场文书
表扬稿范文
2015/01/17 职场文书
文明倡议书
2015/01/19 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书