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 相关文章推荐
用ADODB.Stream转换
Jan 22 Javascript
javascript控制frame,iframe的src属性代码
Dec 31 Javascript
Chosen 基于jquery的选择框插件使用方法
May 30 Javascript
自己编写的类似JS的trim方法
Oct 09 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
Jun 20 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
20170918 前端开发周报之JS前端开发必看
Sep 18 Javascript
实例解析Vue.js下载方式及基本概念
May 11 Javascript
vue实现一拉到底的滑动验证
Jul 25 Javascript
微信小程序引入Vant组件库过程解析
Aug 06 Javascript
通过实例了解JS 连续赋值
Sep 24 Javascript
微信小程序input抖动问题的修复方法
Mar 03 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实现的MySQL通用查询程序
2007/03/11 PHP
php SQL防注入代码集合
2008/04/25 PHP
php empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
php字符串截取函数用法分析
2014/11/25 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
js实现浮动在网页右侧的简洁QQ在线客服代码
2015/09/04 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
Django xadmin安装及使用详解
2020/10/26 Python
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
公司离职证明范本
2014/01/13 职场文书
小学防溺水制度
2014/01/29 职场文书
会计员岗位职责
2014/03/15 职场文书
法制宣传口号
2014/06/16 职场文书
2014年建筑工作总结
2014/11/26 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
诚信考试承诺书范文
2015/04/29 职场文书