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 相关文章推荐
双击滚屏-常用推荐
Nov 29 Javascript
js去除空格的12种实用方法
Nov 08 Javascript
js登录弹出层特效
Mar 07 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
JavaScript中的Function函数
Aug 27 Javascript
学习JavaScript设计模式之状态模式
Jan 08 Javascript
再谈Javascript中的异步以及如何异步
Aug 19 Javascript
JavaScript学习笔记之惰性函数示例详解
Aug 27 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
Sep 03 Javascript
vue webpack打包后图片路径错误的完美解决方法
Dec 07 Javascript
详解用场景去理解函数柯里化(入门篇)
Apr 11 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
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
php实现分页显示
2015/11/03 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
详解python while 函数及while和for的区别
2018/09/07 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
python中return不返回值的问题解析
2020/07/22 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
Ajxa常见问题都有哪些
2014/03/26 面试题
幼儿园安全检查制度
2014/01/30 职场文书
爱护花草树木的标语
2014/06/11 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
文员试用期转正自我鉴定
2014/09/14 职场文书
加强作风建设工作总结
2014/10/23 职场文书
2014年化验室工作总结
2014/11/21 职场文书
考试没考好检讨书
2015/05/06 职场文书
《日月潭》教学反思
2016/02/20 职场文书
初三语文教学反思
2016/03/03 职场文书
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js