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 相关文章推荐
jquery遍历input取得input的name
Apr 27 Javascript
prototype 学习笔记整理
Jul 17 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
Jan 10 Javascript
详解JavaScript中的blink()方法的使用
Jun 08 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
Jul 29 Javascript
jQuery实现删除li节点的方法
Dec 06 Javascript
Vue实现购物车场景下的应用
Nov 27 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
Jan 26 Javascript
使用jQuery给Table动态增加行、清空table的方法
Sep 05 jQuery
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
Apr 28 Javascript
浅谈vue 组件中的setInterval方法和window的不同
Jul 30 Javascript
解决vue $http的get和post请求跨域问题
Jun 07 Vue.js
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
PHP 编写大型网站问题集
2010/05/07 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
Jquery Ajax学习实例 向页面发出请求,返回XML格式数据
2010/03/14 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
vue实现微信分享功能
2018/11/28 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
AJax面试题
2014/11/25 面试题
理货员的岗位职责
2013/11/23 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
北京天坛导游词
2015/02/12 职场文书
教师节获奖感言
2015/07/31 职场文书