关于浏览器默认选择div内容记录
来源:互联网 发布:山东大学威海网络 编辑:程序博客网 时间:2024/06/05 16:37
关于浏览器默认选择div内容记录
项目遇到这么一个问题,需要按快捷键切换选中内容大小写,发现切换一次后,选择内容丢失,随即开始研究怎么让它切换后再次选择。一开始发现大神写的代码。
html代码
<textarea id="t" style="width:500px; height:100px;">麦当劳wifi热点的账号密码及连接设置(全国通用)。麦当劳的免费热点是隐藏wifi,需要手动添加才行。 麦当劳的wifi账号:McDonald-OC wifi密码:Ac28Idfjla92ifjsl3jsHdowIo</textarea><p>输入起始值:<input type="text" id="a" /> 输入结束值:<input type="text" id="b" /></p><p><button id="btn">执行</button></p>
JS代码
var textSelect = function(o, a, b){ //o是当前对象,例如文本域对象 //a是起始位置,b是终点位置 var a = parseInt(a, 10), b = parseInt(b, 10); var l = o.value.length; if(l){ //如果非数值,则表示从起始位置选择到结束位置 if(!a){ a = 0; } if(!b){ b = l; } //如果值超过长度,则就是当前对象值的长度 if(a > l){ a = l; } if(b > l){ b = l; } //如果为负值,则与长度值相加 if(a < 0){ a = l + a; } if(b < 0){ b = l + b; } if(o.createTextRange){//IE浏览器 var range = o.createTextRange(); range.moveStart("character",-l); range.moveEnd("character",-l); range.moveStart("character", a); range.moveEnd("character",b); range.select(); }else{ o.setSelectionRange(a, b); o.focus(); } }};var $ = function(id){ return document.getElementById(id);};$("btn").onclick = function(){ var a = $("a").value; var b = $("b").value; textSelect($("t"), a, b);};
使用后,测试成功,但是发现一个问题,这个方法只在textarea好使,而我们项目需求的是可编辑的DIV,属性:contenteditable="true"。在div里,这个方法就不好使了,随之后继续研究。根据别人的方法,修改,最后发现如下方法可以使用,特此记录。
$("btn").onclick = function() { var a = $("a").value; var b = $("b").value; var o = document.getElementById("t") selectNodeText(o, a, b); }; function selectNodeText(o,a,b){ el=o; el.focus(); var range = document.createRange(); var textNode = el.firstChild; range.selectNodeContents(el); range.collapse(false); range.setStart(textNode,a); range.setEnd(textNode,b); var sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range); }
0 0
- 关于浏览器默认选择div内容记录
- eclipse选择默认浏览器
- 多核浏览器选择默认模式
- 关于浏览器默认字体
- 关于浏览器的选择
- 火狐浏览器内容默认样式表
- 简单记录(浏览器默认使用webkit)
- 防止浏览器默认记录用户输入值
- 关于文本框内容的选择
- 关于离线浏览器的记录
- Windows操作系统关于默认浏览器的设置
- 关于事件冒泡和浏览器默认行为
- 关于sublime默认打开浏览器的问题
- 一段DIV内容垂直的代码,兼容各种浏览器
- div可以输入内容,屏蔽浏览器自动的input样式
- 关于NFC芯片选择的一些记录
- 关于NFC芯片选择的一些记录
- 禁止浏览器记录 文本框之前输入过的内容
- sql 利用游标遍历一个查询结果
- Session原理、生命周期及购物车功能的实现
- 硬盘的分区结构及其数据储存原理
- Intellij IDEA 2016.2 官方帮助文件翻译
- Struts与Hibernate的整合策略
- 关于浏览器默认选择div内容记录
- es6 javascript的Proxy 实例的方法
- 如何只在堆或者栈上分配类对象
- 【NAS】Samba基于security=user的用户访问
- retinex图像增强算法的研究
- NFC的读写实现--高上
- POJ 3616 Milking Time 已被翻译
- 编译错误: /bin/sh: 1: pushd: not found的问题
- Excel中$FilterDatabase的显示及编辑方法