JavaScript记录光标在编辑器中位置的实现方法


Posted in Javascript onApril 22, 2016

本文实例讲述了JavaScript记录光标在编辑器中位置的实现方法。分享给大家供大家参考,具体如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<script type="text/javascript">
function $(ele){return document.getElementById(ele)}
//记录编辑器中的位置
   var selection_start;
   var selection_end;
   function savePos(textBox){
   var start=0;
   var end=0;
   if(typeof(textBox.selectionStart) == "number"){ // not ie
    //alert(typeof(textBox.selectionStart) );
    start = textBox.selectionStart;
    end = textBox.selectionEnd;
   }
   else if(document.selection){
    var range = document.selection.createRange();
    if(range.parentElement().id == textBox.id){
     var range_all = document.body.createTextRange();
     range_all.moveToElementText(textBox);
     for (start=0; range_all.compareEndPoints("StartToStart", range) < 0; start++)
      range_all.moveStart('character', 1);
     for (var i = 0; i <= start; i ++){
      if (textBox.value.charAt(i) == '/n')
       start++;
     }
      var range_all = document.body.createTextRange();
      range_all.moveToElementText(textBox);
      for (end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; end ++)
       range_all.moveStart('character', 1);
       for (var i = 0; i <= end; i ++){
        if (textBox.value.charAt(i) == '/n')
         end ++;
       }
     }
    }
    selection_start = start;
    selection_end = end;
   }
</script>
<form action="" id="test">
<textarea id="t" onfocus="savePos(this);$('log').value=selection_start" onkeydown="savePos(this);$('log').value=selection_start" onmousedown="savePos(this);$('log').value=selection_start" onmouseup="savePos(this);$('log').value=selection_start" >
</textarea>
<input type="text" id="log" />
</form>
</body>
</html>

更多关于JavaScript相关内容可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript之HTMLCollection接口代码
Apr 27 Javascript
使用phantomjs进行网页抓取的实现代码
Sep 29 Javascript
利用jquery操作Radio方法小结
Oct 20 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
Aug 28 Javascript
jQuery动画效果图片轮播特效
Jan 12 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
Feb 08 Javascript
微信小程序之购物车功能
Sep 23 Javascript
Angular4学习笔记之实现绑定和分包
Aug 01 Javascript
基于webpack.config.js 参数详解
Mar 20 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
Dec 11 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 Javascript
在AngularJS中使用jQuery的zTree插件的方法
Apr 21 #Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
Apr 21 #Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
Apr 21 #Javascript
javascript常见数字进制转换实例分析
Apr 21 #Javascript
BootStrap和jQuery相结合实现可编辑表格
Apr 21 #Javascript
动态加载js文件简单示例
Apr 21 #Javascript
JS动态插入并立即执行回调函数的方法
Apr 21 #Javascript
You might like
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
JavaScript 基本概念
2015/01/20 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
JavaScript SHA512&amp;SHA256加密算法详解
2015/08/11 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
Python enumerate遍历数组示例应用
2008/09/06 Python
python的re模块应用实例
2014/09/26 Python
Python生成随机验证码的两种方法
2015/12/22 Python
python中pip的安装与使用教程
2018/08/10 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
python 整数越界问题详解
2019/06/27 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
python实现双人五子棋(终端版)
2020/12/30 Python
pip install命令安装扩展库整理
2021/03/02 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
中学生爱国演讲稿
2013/12/31 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
2014年个人售房协议书
2014/10/30 职场文书
实例讲解Python中sys.argv[]的用法
2021/06/03 Python
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫