在 JavaScript 中确定浏览器窗口的位置?

IT技术 javascript
2021-03-05 07:59:11

由于各种愚蠢的原因,我希望能够在屏幕上检测浏览器窗口的矩形。标题栏和所有。

这是可能的,还是 JavaScript 仅限于其页面的视口?

编辑:我可能不清楚,但视口是窗口中可见的页面部分。这可能不是浏览器常用的术语,但在图形中很常见。

3个回答

对于符合标准的浏览器:

X - Y -window.screenX
window.screenY

对于 IE:

X - Y -window.screenLeft
window.screenTop

请记住,实现方式各不相同小心多显示器设置...

这不是一个好的答案。多显示器设置怎么样。这不起作用。
2021-04-19 07:59:11
我今天刚试过这个,screenLeft 和 screenTop 在 IE 8 中工作,但 screenX 和 screenY 不再工作。看来 IE 终于决定在这个上合作了。其他人有同样的结果吗?
2021-04-21 07:59:11
MDN:“注意:screenLeft是旧Window.screenX属性的别名screenLeft最初仅在 IE 中受支持,但由于流行而在各处引入。”
2021-05-09 07:59:11
定义“工作”,@Marco。不知道多显示器,但它应该在返回坐标方面正常工作,这些坐标可用于在映射到显示器的虚拟“屏幕坐标系”内定位窗口。只是不要试图“聪明”——这些信息足以进行定位,但使用它来假设用户可以看到——或想要看到——是危险的。这些不能替代适当的度量单位和响应式设计。
2021-05-11 07:59:11

看看以下属性:

(这些不会为您提供窗口大小或位置,但可以让您在具有多个显示器的系统上运行时正确解释它们)

Chrome 确实有 window.screenTop 和 window.screenLeft,它们似乎是等效的。
2021-04-23 07:59:11

从谷歌第一个结果复制粘贴:

// Browser Window Size and Position
// copyright Stephen Chapman, 3rd Jan 2005, 8th Dec 2005
// you may copy these functions but please keep the copyright notice as well
function pageWidth() 
{
return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ?  document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;
} 
function pageHeight() 
{
return  window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ?  document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;
} 
function posLeft() 
{
return typeof window.pageXOffset != 'undefined' ? window.pageXOffset :document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;
} 
function posTop() 
{
return typeof window.pageYOffset != 'undefined' ?  window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;
} 
function posRight() 
{
return posLeft()+pageWidth();
} 
function posBottom() 
{
return posTop()+pageHeight();
}
为什么 StackOverflow 很棒的一个很好的例子......以前的顶级谷歌结果有旧的、丑陋的、糟糕的代码。现在,这个 SO 问题是 Google 的最高结果,并且在顶部有一个正确的公认答案
2021-04-19 07:59:11
从同一页面:“为了能够确定浏览器窗口中的可用空间以及该窗口在当前网页中的当前位置,您需要复制以下脚本并将其附加到页面的头部部分。” 我认为这意味着视口。
2021-05-05 07:59:11
仔细检查,这不符合我的要求。当我的窗口位于屏幕中间时,alert(posLeft()) 返回 0。
2021-05-07 07:59:11
pageXOffset 返回“返回文档已经水平滚动的像素数。” - 不是屏幕上的偏移量
2021-05-08 07:59:11
这不符合海报的要求。
2021-05-08 07:59:11