但是你懂的,浏览器实在太不和谐了,兼容性且不说,各种坐标属性看得人头昏眼花,极容易混淆。好吧,我来总结一下:
测试浏览器:IE8, Chrome13, FF8, Safari5, Opera11
先上测试用例(用HTML5的doctype测试,也可看出未来的发展趋势,其他doctype可自行测试):
复制代码 代码如下:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<style type="text/css">
html {
background:red;
}
body {
background:green;
}
#null {
height:1000px;
}
#btn {
cursor:default;
background:blue;
width:50px;
height:30px;
line-height:30px;
text-align:center;
}
</style>
</head>
<body>
<div id='null'>空白区</div>
<div id="btn">点击</div><!-- 按钮用DIV是因为原生按钮有圆角,不确定边界 -->
</body>
<script type="text/javascript">
window.onload = function(){
var btn = document.getElementById('btn');
btn.onclick = function(e){
e = e|| window.event;
var box = (e.target || e.srcElement).getBoundingClientRect(),
offsetX = e.clientX - box.left,
offsetY = e.clientY - box.top;
p('x: '+ e.x+', y: '+e.y);
p('pageX: '+ e.pageX+', pageY: '+e.pageY);
p('offsetX: '+ e.offsetX+', offsetY: '+e.offsetY);
p('FF实现 offsetX: '+offsetX+', offsetY: '+offsetY);
p('layerX: '+ e.layerX+', layerY: '+e.layerY);
p('clientX: '+ e.clientX+', clientY: '+e.clientY);
p('body.scrollLeft: '+ document.body.scrollLeft+', body.scrollTop: '+document.body.scrollTop);
p('body.clientLeft: ' + document.body.clientLeft + ', body.clientTop: '+document.body.clientTop);
p('documentElement.scrollLeft: '+ document.documentElement.scrollLeft+', documentElement.scrollTop: '+document.documentElement.scrollTop);
p('documentElement.clientLeft: ' + document.documentElement.clientLeft + ', documentElement.clientTop: '+document.documentElement.clientTop);
}
}
function p(s){
console.log(s);
}
</script>
</html>
问:怎样获取鼠标相对于浏览器可视文档区域左上角的位置?
答:x, y和clientX, clientY皆可,但是x, y在IE下表示鼠标相对于文档开头的位置(即如果有滚到条的话,会计算在内),还有FF也不支持x, y
推荐: clientX, clientY
问:怎样获取鼠标相对于文档开头的位置?
答: IE:使用x, y(前提是事件源的父元素(一直到documentElement)没有设置position:relative之类的,否则相对于最近元素,而非相对于文档)
非IE:使用pageX, pageY
layerX, layerY其实也可以,但是IE和Opera不支持!
那么如何确保IE正常取值呢?答:event.clientX + document.documentElement.scrollLeft, event.clientY + document.documentElement.scrollTop
问:怎样获取鼠标相对于事件源(event.target||event.srcElement)左上角的位置?
答:offsetX, offsetY。但是FF不支持,怎样办呢?
1. 先获取鼠标相对于浏览器可视文档区域左上角的位置
2. 然后获取事件源相对于浏览器可视文档区域左上角的位置
3. 相减,收工
也许有人会问,这第2步怎么做啊?好吧,好人做到底!
HTMLElement.getBoundingClientRect()方法
返回值为:{top:xx, right:xx, bottom:xx, left:xx, width:xx, height:xx}
也就是说,一个元素的位置信息都给了,我们要做的就是:
复制代码 代码如下:
var box = (e.target || e.srcElement).getBoundingClientRect(),
offsetX = e.clientX - box.left,
offsetY = e.clientY - box.top;
经测试,所有浏览器都和event.offsetX, event.offsetY保持一致(当然FF除外)
我的例子中,最后还检测了scrollLeft, scrollTop, clientLeft, clientTop,本来以为它们几个会作怪,可测试结果表明:
除了scrollTop,其他都是0(当然scrollLeft是因为没出现横向滚动条所致)
scrollTop各浏览器表现不尽相同,如下:
body.scrollTop的情况
IE, FF, Opera:0
Chrome, Safari:向上滚动的距离
documentElement.scrollTop的情况
IE, FF, Opera:向上滚动的距离
Chrome, Safari:0
相关推荐:
seo要什么条件,seo都需要做什么 ,交互ai求职
在线AI文章生成:内容创作新革命
目前AI软件有哪些?智能新时代的必备工具
SEO趋势:2025年搜索引擎优化的未来发展,河南省营销推广系统官网
“标题制造机”:颠覆内容创作的秘密武器,助你轻松打造吸引力十足的标题,景区线上推广用哪些网站
SEO那么重要,企业如何通过它脱颖而出?,自媒体推广营销的概念
SEO更多-让你的企业站点在搜索引擎中脱颖而出,如何结交seo大神
seo链接有什么用,seo外链是什么意思 ,one ai写作
SEO外包:提升网站排名与品牌曝光的最佳选择,大创建设网站
SEO大神如何在激烈的互联网竞争中脱颖而出?,网页设计和网站建设试题
SEO提高:如何通过精准优化让网站流量翻倍,优化排名seo加盟费用
文章缩写AI:高效编辑的未来之光
AI优化文章:如何利用人工智能提升写作效率和质量
ChatGPT进不去怎么办?解决方案与技巧,轻松畅享智能对话,ai va
SEO做好,企业网站流量翻倍的关键,seo白帽技术有哪些
SEO优化:让你的网站在竞争中脱颖而出,临沧seo代理
SEO量:提升网站流量和排名的关键法则,德兴seo
SEO怎么优化比较好?全面提升网站排名的实用技巧,高级ai玩家
SEO留痕:数字营销的隐性力量,如何通过SEO优化让品牌更具竞争力,铁岭网站关键词建设优化
SEO爱站:提升网站排名,赢得流量的秘密武器,优化网站设计价格多少
怎么用AI写出高质量科普文章?揭秘新时代创作利器!
用AI写一篇文章,如何提升你的写作效率与创意
ChatGPT198元永久会员,开启智慧之门,体验AI的极致服务!,老孙教ai
优化原理:提升效率、创新突破的核心法则,印刷包装推广有哪里网站
GoogleGPT-引领未来智能对话的革命,灵境ai画质
怎样利用AI写文章,轻松提升写作效率
什么是秀米?全方位了解这款微信公众号排版神器,宁波全网营销型网站建设
seo要学什么技术,seo要学什么技术好 ,ai.fale
为什么seo这么难,seo难嘛 ,ai宁中则
seo组建需要什么条件,seo建站的步骤 ,ai肌肉宝宝
ChatGPT使用问题?如果您正在使用VPN,请尝试将其关闭,ai制作渐变立体
seo都有什么意思,seo 啥意思 ,ai园林
一秒采集:提升效率、创造价值的秘密武器,苏州网站整站优化
SEO合作:让你的网站在搜索引擎中脱颖而出,惠州抖音seo策划公司
什么是“神马关键词”?如何用它提升你的网络营销效果?,新闻发布网站怎么做推广
《权重参谋:让您的网站轻松登顶搜索引擎的秘密武器》,设计微信社群私域营销推广简案
ChatGPT怎么突然不能打开了?你需要了解的原因与解决办法,ai写作有什么问题吗怎么解决
未来的效率利器AI软件下载AI,助您轻松驾驭智能世界
软件AI的全称:人工智能驱动未来的关键力量
SEO中的别类词:提升排名,轻松超越竞争对手,ai插画生肖
AI通过算法和数据生成的作品:科技与艺术的跨越,带来无限创意可能,ai优化程序
seo需要什么人才,seo需要做什么工作 ,探索ai照片
SEO妍:搜索引擎优化的艺术,轻松打造网络营销新未来,辽宁网站建设贵不贵
为什么要年前做SEO,企业为什么做seo推广 ,云南ai大数据公司
ChatGPT支持多种语言输入输出,让全球资讯触手可及,联想拯救者的ai写作
2024年AI写文章生成器推荐:让创作轻松高效,提升写作水平
SEO优化的话题:助力企业成功的关键,夏杰ai智能管家
SEO找出网站流量提升的终极策略,带你走向搜索引擎巅峰!,朝阳模板网站建设价格
用AI写文章查重率高吗?揭秘AI写作与查重检测的关系
在线AI文章:为您打造全新内容创作体验