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

 更新时间:2016年04月22日 08:52:09   作者:zhangw428  
这篇文章主要介绍了JavaScript记录光标在编辑器中位置的实现方法,涉及JavaScript鼠标事件结合页面元素的操作技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • JS判断页面是否出现滚动条的方法

    JS判断页面是否出现滚动条的方法

    这篇文章主要介绍了JS判断页面是否出现滚动条的方法,涉及javascript针对页面元素的读取与判定实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • layui 实现自动选择radio单选框(checked)的方法

    layui 实现自动选择radio单选框(checked)的方法

    今天小编就为大家分享一篇layui 实现自动选择radio单选框(checked)的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • js报错:Maximum call stack size exceeded的解决方法

    js报错:Maximum call stack size exceeded的解决方法

    这篇文章主要给大家介绍了关于js报错Maximum call stack size exceeded的解决方法,文中通过实例代码将解决的方法介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • JS实现随机点名系统

    JS实现随机点名系统

    这篇文章主要为大家详细介绍了JS实现随机点名系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • js左右弹性滚动对联广告代码分享

    js左右弹性滚动对联广告代码分享

    这个对联广告与其它的有所区别,这个是页面加载时先没看到广告,然后从左边快速飞进来的两个对联广告哦,下面我们一起来看看对联广告效果代码
    2014-02-02
  • 解决layer.open后laydate失效的问题

    解决layer.open后laydate失效的问题

    今天小编就为大家分享一篇解决layer.open后laydate失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • js 数组当前行添加数据方法详解

    js 数组当前行添加数据方法详解

    这篇文章主要介绍了js 数组当前行添加数据方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • JavaScript基础知识及常用方法总结

    JavaScript基础知识及常用方法总结

    JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的,通过本篇文章给大家介绍javascript基础知识及常用方法总结,对js基础知识及常用方法相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • Javascript事件的捕获方式和冒泡方式详解

    Javascript事件的捕获方式和冒泡方式详解

    这篇文章主要为大家介绍了Javascript事件的捕获方式和冒泡方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • JS面向对象编程基础篇(一) 对象和构造函数实例详解

    JS面向对象编程基础篇(一) 对象和构造函数实例详解

    这篇文章主要介绍了JS面向对象编程对象和构造函数,结合实例形式详细分析了JS面向对象编程对象和构造函数具体概念、原理、使用方法及操作注意事项,需要的朋友可以参考下
    2020-03-03

最新评论