代码:

<!DOCTYPE html>
<html> <head>
<title>计算屏幕坐标</title> <meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1"> <style type="text/css">
body {
margin: 0;
padding: 0;
} #msg {
background-color: #eeeeee;
height: 200px;
}
</style>
</head> <body>
<div id="msg"></div> <script type="text/javascript">
let div = document.querySelector('#msg');
let msg = '';
let firstPoint = getPoint(0, 0); window.onresize = function (e) {
setTimeout(() => {
firstPoint = getPoint(0, 0);
showPoint();
}, 100);
} window.onmousemove = function (e) {
setTimeout(() => {
showPoint(e);
}, 100);
} function showPoint(e) {
msg = '';
let point;
if (e) {
point = getPoint(e.clientX, e.clientY);
} else {
point = getPoint(0, 0);
} msg += '===========================================================================================<br />';
msg += '页面左上角屏幕坐标:' + firstPoint.x + ', ' + firstPoint.y + '<br />';
if (e) {
msg += '事件屏幕坐标:' + e.screenX + ', ' + e.screenY + '<br />';
msg += '计算屏幕坐标:' + point.x + ', ' + point.y + '<br />';
if (e.screenX == point.x && e.screenY == point.y) {
msg += '相等<br />';
} else {
msg += '不相等<br />';
}
}
div.innerHTML = msg;
} //计算屏幕坐标
function getPoint(clientX, clientY) {
let left = 0;
let top = 0; if (window.outerWidth + 16 == window.innerWidth && window.outerHeight + 16 == window.innerHeight) { //最大化全屏
msg += '最大化全屏状态<br />';
top = (window.outerHeight - window.innerHeight + 8) + window.screenTop + clientY;
left = (window.outerWidth - window.innerWidth + 8) + window.screenLeft + clientX;
} else if (window.outerWidth == window.innerWidth && window.outerHeight == window.innerHeight) { //全屏
msg += '全屏状态<br />';
top = (window.outerHeight - window.innerHeight) + window.screenTop + clientY;
left = (window.outerWidth - window.innerWidth) + window.screenLeft + clientX;
}
else {
if (window.outerWidth == screen.availWidth && window.outerHeight == screen.availHeight) { //最大化
msg += '最大化状态<br />';
top = (window.outerHeight - window.innerHeight) + window.screenTop + clientY;
left = (window.outerWidth - window.innerWidth) + window.screenLeft + clientX;
} else {
msg += '非最大化非全屏状态<br />';
top = (window.outerHeight - window.innerHeight - 8) + window.screenTop + clientY;
left = (window.outerWidth - window.innerWidth - 8) + window.screenLeft + clientX;
}
} return { x: left, y: top };
}
</script> </body> </html>

说明:适用于谷歌浏览器,360浏览器下有BUG,因为360浏览器有状态栏。

思考:获取电脑屏幕坐标的意义是什么?

js将页面上取得的元素坐标转换为电脑屏幕坐标的更多相关文章

  1. Progress.js – 为页面上的任意对象创建进度条效果

    Progress.js 是一个 JavaScript 和 CSS3 的库,它帮助开发人员为网页上的每个对象创建和管理进度条效果.你可以设计自己的模板,进度条或者干脆定制. 您可以使用 Progress ...

  2. 使用js在页面上新建文件夹

    使用js在页面上新建文件夹 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox

    JS 在页面上直接将json数据导出到excel,支持chrome,edge,IE10+,IE9,IE8,Safari,Firefox <html> <head> </h ...

  4. 如何使用 js 检测页面上全局变量

    如何使用 js 检测页面上全局变量 js 检测页面全局变量脚本 <!DOCTYPE html> <html lang="zh-Hans"> <head ...

  5. js禁用页面上右键菜单、选中和复制

    有时候我们不想页面上的内容被人复制走,那么就可以使用js对页面进行设置,禁止右键菜单.禁止选中.禁止复制等功能可以有效的达到这个效果,js代码如下所示: /** * 禁用右键菜单 */ documen ...

  6. 如何用JS获取页面上的所有标签

    最近忙的一匹,忙着大保健,都来不及写博客,今天特意抽出点时间来写一写 前两天看到一个题,是问如何从页面上获取所有的标签的并查看他们的数量,感觉还是有点意思的,所以给大家来搞一下子 我们先来捋捋思路,那 ...

  7. js检查页面上有无重复id的代码分享

    用js代码检查一个页面上是否用重复的id. 方法一: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ...

  8. JS 将页面上的表格导出为 Excel 文件

    如果在页面上展示了一个表格,想把这个表格导出为Excel文件,那么在要求不高的情况下,可以直接利用 JavaScript 的 Blob 和 Object URL 特性将表格导出.不过,这就是利用了 E ...

  9. append、appendTo、prepend、prependTo、before、insertBefore、after、insertAfter、replaceAll方法被调用后,原本在页面上显示的元素会消失

    详细描述: $ele.append..appendTo..prepend..prependTo..before..insertBefore..after..insertAfter..replaceAl ...

  10. js检测页面上一个元素是否已经滚动到了屏幕的可视区域内

    应用场景:只要页面加载了,其中在页面中出现的li就向控制台输出第几个发送请求:在本次加载的页面中,再将滚动条滚回前边的li,不再向控制台输出东西,也就是说已经显示过的li,不再向控制台输出东西. &l ...

随机推荐

  1. python之继承的方法重写

    目录 普通方法 方法重写super().xxx() 我们在python之继承及其实现方法中已经学会了打印子类在父类继承的属性 那么我们怎么打印出子类中特有的属性呢 普通方法 我们当然可以在子类中添加新 ...

  2. GeminiDB新特性:让Redis广告频控爱不释手的exHASH

    本文分享自华为云社区<GeminiDB新特性:让Redis广告频控爱不释手的exHASH>,作者:GeminiDB-Redis博客 . exHash类型是一种支持Field过期的新型数据类 ...

  3. 【javaweb】integer是什么意思?integer和int的区别

    1.数据类型不同:int是基础数据类型,而integer是包装数据类型 2.默认值不同:int的默认值是0,而integer的默认值是null 3.内存中存储的方式不同:int 在内存中直接存储的是数 ...

  4. macOS上有哪些值得推荐的常用软件

    macOS 作为一款流行的操作系统,拥有丰富的第三方软件生态系统,涵盖了各种领域的应用程序.以下将介绍一些在 macOS 上备受推崇的常用软件,并对它们进行详细的介绍和说明. 1. 生产力工具 a. ...

  5. CLion安装与配置教程

    一.下载并安装CLion 1.下载 1.官网: Download CLion 2.注意: 这里建议使用2021.1.3版本之前,为之后的使用便利而做打算. (这里以Windows系统为例,其他系统类似 ...

  6. 生成模型的两大代表:VAE和GAN

    生成模型 给定数据集,希望生成模型产生与训练集同分布的新样本.对于训练数据服从\(p_{data}(x)\):对于产生样本服从\(p_{model}(x)\).希望学到一个模型\(p_{model}( ...

  7. CAP 8.0 版本发布通告 - CAP 7岁生日快乐!

    前言 今天,我们很高兴宣布 CAP 发布 8.0 版本正式版,从 2016 年 12 月 14 日CAP立项到 2023 年 12 月14 日发布 8.0 版本刚好满 7 年,祝 CAP 7 岁生日快 ...

  8. 【笔记-错误】springCloud-alibaba-feign集成sentinel的启动报错

    背景 随着Spring Cloud Alibaba 2.2.0.RELEASE的发布,终于可以使用最新的Spring Boot和Spring Cloud. 现在的环境 依赖 版本 Spring Boo ...

  9. 如何从零开始实现TDOA技术的 UWB 精确定位系统(2)

    这是一个系列文章<如何从零开始实现TDOA技术的 UWB 精确定位系统>第2部分. 重要提示(劝退说明): Q:做这个定位系统需要基础么?A:文章不是写给小白看的,需要有电子技术和软件编程 ...

  10. Python——第二章:文件操作

    文件操作 1. 找到这个文件. 双击打开它 open(文件路径, mode="", encoding="") 文件路径: 1. 绝对路径 d:/test/xxx ...