Javascript 如何获得浏览器';s document.body相对于屏幕的坐标?

Javascript 如何获得浏览器';s document.body相对于屏幕的坐标?,javascript,Javascript,一定有办法找到这个。 我需要计算document.body相对于屏幕的坐标 我需要找出图中问号的坐标。这将是文档主体相对于屏幕的位置。这张图片描述了我可以使用的属性。 可能吗 正如你在那里画的那样 x = window.screenLeft y = window.screenTop + (window.outerHeight - window.innerHeight) 但是,我不相信这在所有浏览器中都是一致的 编辑: 在firefox中,您可以使用: x = window.mozInnerSc

一定有办法找到这个。 我需要计算document.body相对于屏幕的坐标

我需要找出图中问号的坐标。这将是文档主体相对于屏幕的位置。这张图片描述了我可以使用的属性。
可能吗

正如你在那里画的那样

x = window.screenLeft
y = window.screenTop + (window.outerHeight - window.innerHeight)
但是,我不相信这在所有浏览器中都是一致的

编辑:

在firefox中,您可以使用:

x = window.mozInnerScreenX
y = window.mozInnerScreenY
在Chrome中可能有一个等价物。如果您只需要支持这两种浏览器,则可以为每种浏览器使用自定义代码。

建议通过比较内外窗宽度来获得边框宽度,然后从内外高度差中减去该宽度,以获得可添加到screenX和screenY的值的窗头大小:

// compute width of borders
var borderWidth = (window.outerWidth - window.innerWidth) / 2;

// compute absolute page position
var innerScreenX = window.screenX + borderWidth;
var innerScreenY = (window.outerHeight - window.innerHeight - borderWidth) + window.screenY;
诚然,这并不能保证是正确的——用户完全有可能在底部有一个带条的浏览器,或者在侧面/底部有不同宽度的窗口装饰——但在我能想到的每个默认浏览器/窗口配置中,这对于顶级浏览器窗口来说都是一个准确、实用的解决方法。(当然,这不适用于iframe中的页面。)



正确的解决方案是在whatwg邮件列表上提出一个规范,使innerScreenX和innerScreenY成为一个标准,如关于为Chrome实现mozInnerScreenX/Y的类似值中所述。不过,似乎没有人花时间这么做(尽管有人疯狂地建议实现一个异步API函数来“计算”它)。

window.screenLeft
没有定义。您试过代码了吗?window.outerHeight还包括浏览器的页脚。所以,这是行不通的。该位置将略低于实际位置coordinates@RobW这是在firefox和chrome中定义的。我只需要这些浏览器的解决方案。@RobW我没有,但我假设这两个属性是OP所说的存在的。我认为
window.screenX
在这里不起作用,因为在我的浏览器中,全屏显示时这个值是-8,这没有任何意义(我猜这个值是浏览器窗口最左边的值,而不是我认为dkulkarni想要的内容窗口)。我需要浏览器主体开始点的坐标。