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 23 Javascript
基于jQuery的一个扩展form序列化到json对象
Dec 09 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
Jun 20 Javascript
jquery.qtip提示信息插件用法简单实例
Jun 17 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
Mar 15 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
Oct 20 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
Mar 09 Javascript
Vuex 使用 v-model 配合 state的方法
Nov 13 Javascript
详解一个基于套接字实现长连接的express
Mar 28 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
Sep 02 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
用mysql内存表来代替php session的类
2009/02/01 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
js读写(删除)Cookie实例详解
2013/04/17 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
JQuery球队选择实例
2015/05/18 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
2020/09/05 Javascript
一百行python代码将图片转成字符画
2021/02/19 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
2014年公司庆元旦活动方案
2014/03/05 职场文书
成绩单家长评语大全
2014/04/16 职场文书
模特大赛策划方案
2014/05/28 职场文书
高中综合实践活动总结
2014/07/07 职场文书
法人委托书的范本格式
2014/09/11 职场文书
融资合作协议书范本
2014/10/17 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
高中政治教学反思
2016/02/23 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
MySQL数据库必备之条件查询语句
2021/10/15 MySQL