Javascript 确定浏览器中的实际查看大小

Javascript 确定浏览器中的实际查看大小,javascript,browser,dimensions,viewport,Javascript,Browser,Dimensions,Viewport,我试图确定当前浏览器窗口的实际视口大小。我试过: window.innerHeight/innerWidth document.documentElement.clientHeight/clientWidth document.body.clientHeight/clientWidth 全部返回整页大小,而不是查看区域 我试图最终实现的是强制在屏幕上(在视口中)出现一个弹出菜单。现在当它显示时,它可能会显示在滚动条下面,用户对此不满意。我知道他们点击的位置。我只需要将其与查看区域的大小(与弹

我试图确定当前浏览器窗口的实际视口大小。我试过:

  • window.innerHeight/innerWidth
  • document.documentElement.clientHeight/clientWidth
  • document.body.clientHeight/clientWidth
全部返回整页大小,而不是查看区域

我试图最终实现的是强制在屏幕上(在视口中)出现一个弹出菜单。现在当它显示时,它可能会显示在滚动条下面,用户对此不满意。我知道他们点击的位置。我只需要将其与查看区域的大小(与弹出窗口的大小)进行比较,看看它是否会离开屏幕

需要注意的是,页面显示在IFRAME中,因此如果我需要提升一个级别以获得正确的值,我可以这样做。

试试看

document.getElementById("").offsetWidth
用不同的元素ID填充上述代码,尝试使用body标记或包装器div

  • window.innerHeight/innerWidth
这无疑为您提供了视口大小(在本例中,是iframe内部的大小),但在IE上不可用

  • document.documentElement.clientHeight/clientWidth
当浏览器处于“标准”模式时,这将为您提供视口大小。通常用作IE的后备

  • document.body.clientHeight/clientWidth

这将在中提供视口高度。你不想处于怪癖状态。检查
显然,通过访问父文档,我能够获得正确的值


谢谢

Grrr。。。不。我希望就是这样。我的显示器是1900x1200,带有Body标签的offsetWidth正在报告:1903x1308。1903是正确的,但1308是页面的大小。window.innerHeight给出了IFRAME的大小。。。它没有给出视口大小:(这在Firefox中。如果您在iframe中,iframe就是您的视口。您不可能显示iframe边界之外的任何内容。如果父文档是您站点的一部分(同源策略)您可以使用
窗口调用它。parent
让它读取自己的视口,并在iframe的周围/顶部添加元素。也许我们在术语方面没有进行正确的沟通。对于我(以及我研究过的其他网站),视口是从顶部菜单到底部状态栏的浏览器区域。当前正在查看的页面的实际区域。因此,如果浏览器全屏显示为1900x1200,顶部IE/FF/Chrome菜单占用200px,状态栏和Windows任务栏占用另外100 px,则视口高度将为900px(1200-200-100)。页面的高度可以从0px到无限像素。如果它大于可用的900像素,您将看到一个滚动条。