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 相关文章推荐
js 禁止选择功能实现代码(兼容IE/Firefox)
Apr 23 Javascript
理解Javascript_12_执行模型浅析
Oct 18 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
May 05 Javascript
js获取GridView中行数据的两种方法 分享
Jul 13 Javascript
javascript使用定时函数实现跳转到某个页面
Dec 25 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
Apr 01 Javascript
AngularJS入门教程之静态模板详解
Aug 18 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
Aug 20 Javascript
node.js命令行教程图文详解
May 27 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
Oct 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
在同一窗体中使用PHP来处理多个提交任务
2008/05/08 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
详谈javascript异步编程
2016/02/21 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
基于node.js实现微信支付退款功能
2017/12/19 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
python的变量与赋值详细分析
2017/11/08 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
利用Python实现kNN算法的代码
2019/08/16 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
pytorch实现查看当前学习率
2020/06/24 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
策划助理岗位职责
2013/11/18 职场文书
校园文化建设方案
2014/02/03 职场文书
网络优化专员求职信
2014/05/04 职场文书
如何写辞职信
2015/05/13 职场文书
2016年校长新年寄语
2015/08/17 职场文书
简单介绍Python的第三方库yaml
2021/06/18 Python
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL