html中js捕获浏览器窗口外的鼠标位置

html中js捕获浏览器窗口外的鼠标位置,第1张

<title>Js获取适时获取鼠标坐标值并显示</title>

<script type="text/javascript">

var getCoordInDocumentExample = function(){

var coords = documentgetElementById("coords");

coordsonmousemove = function(e){

var pointer = getCoordInDocument(e);

var coord = documentgetElementById("coord");

coordinnerHTML = "X,Y=("+pointerx+", "+pointery+")";

}

}

var getCoordInDocument = function(e) {

e = e || windowevent;

var x = epageX || (eclientX +

(documentdocumentElementscrollLeft

|| documentbodyscrollLeft));

var y= epageY || (eclientY +

(documentdocumentElementscrollTop

|| documentbodyscrollTop));

return {'x':x,'y':y};

}

windowonload = function(){

getCoordInDocumentExample();

};

</script>

<div id="coords" style="width:500px;height:200px;background:#F2F1D7;border:2px solid #0066cc;">

请在此移动鼠标。

</div>

<br />

<div id="coord" style="width:500px;border:2px solid #336699;"> </div>

你说的那一般是js实现的,那就相对复杂多了,其中涉及到事件也很多。具体问题还是要具体看,现在很多在非ie下的代码不少都是用html5+css3完成的,因为只有ie对html5支持最差。

关于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);

}

方法如下:

1、写一个js获取userAgent属性的html文件,文件内容如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<script>

alert(windownavigatoruserAgent);

</script>

</head>

<body>

<h1>测试浏览器类型</h1>

</body>

</html>

2、Chrome对应userAgent信息:

Chrome/后面紧跟的380数字串为当前浏览器版本

3、FF对应userAgent信息

Firefox/后面紧跟的330为当前FF版本

4、IE对应userAgent信息;其中MSIE后面的数字代表当前版本,如图:笔者所有为ie90

另外, 只有IE支持创建ActiveX控件,因此她有一个其他浏览器没有的东西,就是ActiveXObject函数。只要判断window对象存在 ActiveXObject函数,就可以明确判断出当前浏览器是IE。

5、Opera对应userAgent信息:

OPR/后面紧跟的250数字串为当前Opera浏览器版本

6、Safari对应userAgent信息

Version/后面紧跟的517为Safari浏览器当前版本

IE没有这种方法,只能是逐个new ActiveXObject('ShockwaveFlashShockwaveFlash');既定的插件名,然后通过是否实例成功侧面检测指定的插件是否已安装。

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

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

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

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

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

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

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

5

layerX/layerY:FF特有,鼠标相比较于当前坐标系的位置,即如果触发元素没有设置绝对定位或相对定位,以页面为参考点,如果有,将改变参考坐标系,从触发元素盒子模型的border区域的左上角为参考点也就是当触发元素设置了相对或者绝对定位后,layerX和offsetX就幸福地生活在一起^-^,几乎相等,唯一不同就是一个从border为参考点,一个以内容为参考点

chrome和safari一条龙通杀!完全支持所有属性其中(offsetX和layerX都是以border为参考点)

下面这个是获取相对于屏幕的坐标

documentonmousemove=function(e){e=e e:windowevent;documentwriteln("X:"+escreenX+"Y:"+escreenY);}

以上就是关于html中js捕获浏览器窗口外的鼠标位置全部的内容,包括:html中js捕获浏览器窗口外的鼠标位置、js 获取文本框位置、JS如何获取浏览器版本信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9320152.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存