js 触发onkeydown事件时候,获取光标所在元素或者获取光标所在标签名称

js 触发onkeydown事件时候,获取光标所在元素或者获取光标所在标签名称,第1张

<div id=test contenteditable=true></div>

<script>

windowonload=function(){

   documentgetElementById("test")onkeydown=function(e){

      //当前元素是(e||event)currentTarget

      consolelog((e||event)currentTarget);

      //标签名称是(e||event)currentTargettagName

      consolelog((e||event)currentTargettagName);

   }

}

</script>

吸使用以下几种方式获取:

1PageX/PageX:鼠标在页面上的位置,从页面左上角开始,即是以页面为参考点,不随滑动条移动而变化

2clientX/clientY:鼠标在页面上可视区域的位置,从浏览器可视区域左上角开始,即是以浏览器滑动条此刻的滑动到的位置为参考点,随滑动条移动 而变化

可是悲剧的是,PageX只有FF特有,IE这个悲剧没有啊T_T,所以大牛们想出了一个办法

PageY=clientY+scrollTop-clientTop;(只讨论Y轴,X轴同理,下同)

3screenX/screenY:鼠标在屏幕上的位置,从屏幕左上角开始(w3c标准)

4offsetX/offsetY:IE特有,鼠标相比较于触发事件的元素的位置,以元素盒子模型的内容区域的左上角为参考点,如果有boder,可能出现负值

关于JS获取与设置文本框、文本域光标位置

//获取光标所在文本框的位置

function getCaret(textbox) {

var control = documentactiveElement;

textboxfocus();

var rang = documentselectioncreateRange();

rangsetEndPoint(“StartToStart”,textboxcreateTextRange())

controlfocus();

alert(rangtextlength);

}

//获取光标所在文本域的位置

function getCaretForTextArea(ZysrID){

var txb = documentgetElementById(ZysrID);//根据ID获得对象

var pos = 0;//设置初始位置

txbfocus();//输入框获得焦点,这句也不能少,不然后面会出错,血的教训啦

var s = txbscrollTop;//获得滚动条的位置

var r = documentselectioncreateRange();//创建文档选择对象

var t = txbcreateTextRange();//创建输入框文本对象

tcollapse(true);//将光标移到头

tselect();//显示光标,这个不能少,不然的话,光标没有移到头当时我不知道,搞了十几分钟

var j = documentselectioncreateRange();//为新的光标位置创建文档选择对象

rsetEndPoint(“StartToStart”,j);//在以前的文档选择对象和新的对象之间创建对象,妈的,不好解释,我表达能力不算太好有兴趣自己去看msdn的资料

var str = rtext;//获得对象的文本

var re = new RegExp(“[//n]“,”g”);//过滤掉换行符,不然你的文字会有问题,会比你的文字实际长度要长一些搞死我了我说我得到的数字怎么总比我的实际长度要长

str = strreplace(re,”");//过滤

pos = strlength;//获得长度也就是光标的位置

alert(pos);

rcollapse(false);

rselect();//把光标恢复到以前的位置

txbscrollTop = s;//把滚动条恢复到以前的位置

}

//设置光标在文本框中的位置

function setCaret(id,pos){

var textbox = documentall(id);

var r = textboxcreateTextRange();

rcollapse(true);

rmoveStart(‘character’,pos);

rselect();

}

//设置光标位置的调用函数

function readyforset(id){

var pos = documentgetElementById(‘setpos’)value;

setCaret(id,pos);

}

if(!-[1,])//如果是IE

{

var p=getCursortPosition(obj);;

}

if(p>0)

{

setCaretPosition(obj,p);

}

以上就是关于js 触发onkeydown事件时候,获取光标所在元素或者获取光标所在标签名称全部的内容,包括:js 触发onkeydown事件时候,获取光标所在元素或者获取光标所在标签名称、js mousedown事件怎么获取座标、js 获取文本框位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9651281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存