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处理DOM元素事件实现代码
May 23 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
Oct 30 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
基于jQuery制作小图标上下滑动特效
Jan 18 Javascript
如何正确理解javascript的模块化
Mar 02 Javascript
javascript按顺序加载运行js方法
Dec 01 Javascript
浅谈FastClick 填坑及源码解析
Mar 02 Javascript
angular2实现统一的http请求头方法
Aug 13 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
May 06 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
May 29 Javascript
小程序如何写动态标签的实现方法
Feb 05 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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
PHP程序员编程注意事项
2008/04/10 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
vue2.0结合DataTable插件实现表格动态刷新的方法详解
2017/03/17 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
python实现class对象转换成json/字典的方法
2016/03/11 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
C# Debug和Testing相关面试题
2015/10/25 面试题
六十岁生日答谢词
2014/01/10 职场文书
庆八一活动方案
2014/01/25 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
党员公开承诺书范文
2014/03/25 职场文书
毕业生工作求职信
2014/06/30 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android