js兼容所有浏览器的pageX和pageY属性
标题中的两个属性具有一定的浏览器兼容性问题。
不出所料,此兼容性问题是由IE9以下浏览器导致的。
但是由于考虑到低版本的IE浏览器用户尚多,所以本章节介绍一下如何实现兼容所有浏览器的pageX和pageY。
jQuery的兼容方式:
// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && original.clientX != null ) {
eventDoc = event.target.ownerDocument || document;
doc = eventDoc.documentElement;
body = eventDoc.body;
event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft||body&&body.clientLeft || 0 );
event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
}
其实简单的实现方式就是鼠标相对于浏览器视口的偏移加上文档的滚动条隐藏的高度减去文档的clientTop。
代码:
var pageY = event.clientY +document.documentElement. scrollTop-document.documentElement.clientTop
为何要减去document.documentElement.clientTop
这是IE8之下浏览器特有的文档的偏移,即使设置html,body的padding和margin为0也不会影响其值。
在iE7下测试得到:
document.documentElement.clientTop//2px
document.documentElement.clientLeft //2px
document.bocy.clientTop//0px
document.body.clientLeft//0px
声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至201542412@QQ.com举报,一经查实,本站将立刻删除。
相关推荐
-
js中关于定义类的几种方式介绍
jvscrit刚刚诞生的时候,只是一种简单的网页脚本语言。如果你忘了填写用户名,它就跳出一个警告。如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途。程序员用它完成越来越庞大的项目。
-
兼容低版本IE浏览器的Object.create()方法
关于Objct.crt()方法的基本用法可以参阅Objct.crt()一章节。但是此方法对于低版本的浏览器无效,比如I9以下浏览器。下面就介绍一下代码实例,它实现了兼容效果。代码如下
-
js判断是否在微信内置浏览器中打开
代码实例如下// tru or flsvr flg = Wixini.onInWixin();Wixini的地址是github/zxli/Wixini。
-
javascript实现的控制浏览器全屏效果 [
点击F11键能够实现浏览器的全屏效果。当然这个效果也是可以用js实现,下面就是相关代码,需要的朋友可以做一下参考。代码如下: chrs
-
关于浏览器缓存问题304响应状态简单介绍
本章节将介绍一下关于htt请求304状态内容,其实也就是浏览器缓存问题。下面先看一个图片:状态是304的相关内容并不是从服务器下载的,而是读取的本地缓存的内容。这对于优化网站的性能具有很重要的意义,