获取屏幕大小、当前网页和浏览器窗口

IT技术 javascript html jquery layout cross-browser
2021-01-19 23:23:18

我怎样才能得到windowWidth, , windowHeight, pageWidth, pageHeight, screenWidth, screenHeight, pageX, pageY, screenX,screenY它适用于所有主要浏览器?

描述需要哪些值的屏幕截图

6个回答

您可以使用 jQuery 获取窗口或文档的大小:

// Size of browser viewport.
$(window).height();
$(window).width();

// Size of HTML document (same as pageHeight/pageWidth in screenshot).
$(document).height();
$(document).width();

对于屏幕大小,您可以使用screen对象:

window.screen.height;
window.screen.width;
@Marco Kerwitz 最糟糕的是我输入了“javascript get window width”,这个答案的内容在谷歌上。我的一大减一。
2021-03-11 23:23:18
该OP曾问这jQuery是一个选项。忍者编辑原始问题以排除它的人在这里有错,而不是使用世界公认的 javascript 库给出合法答案的人。
2021-03-18 23:23:18
jQuery 方法 height() 似乎适用于所有元素,并返回一个数字 ( 46) 而不是像 css('height') ( "46px")这样的字符串
2021-03-30 23:23:18
@웃웃웃웃웃 你在答案中编辑了什么?根据修订版,您根本没有编辑任何内容
2021-04-03 23:23:18
在处理移动 Safari 时,遗憾的是 jQuery 并不是这个问题的完美解决方案。请参阅github.com/jquery/jquery/blob/master/src/dimensions.js 上第13 行的注释
2021-04-06 23:23:18

这有你需要知道的一切:获取视口/窗口大小

但简而言之:

var win = window,
    doc = document,
    docElem = doc.documentElement,
    body = doc.getElementsByTagName('body')[0],
    x = win.innerWidth || docElem.clientWidth || body.clientWidth,
    y = win.innerHeight|| docElem.clientHeight|| body.clientHeight;
alert(x + ' × ' + y);

小提琴

请停止编辑此答案。它已经被不同的人编辑了 22 次以匹配他们的代码格式偏好。还有人指出,如果您只想针对现代浏览器,则不需要这样做 - 如果是这样,您只需要以下内容:

const width  = window.innerWidth || document.documentElement.clientWidth || 
document.body.clientWidth;
const height = window.innerHeight|| document.documentElement.clientHeight|| 
document.body.clientHeight;

console.log(width, height);
@apaidnerd:不支持 IE8 等浏览器的标准不支持 document.body。然而,IE9 确实如此。
2021-03-18 23:23:18
@MichaelMikowski 那不是真的!甚至 IE5 也支持document.body.
2021-03-26 23:23:18
我只想非常安静地指出,单字母变量名从来没有帮助。
2021-03-28 23:23:18
@nux 我纠正了,我已经确认支持 IE8。我知道我们最近针对的至少一个浏览器不支持 document.body,我们不得不更改为使用 getElementsByTagName 方法。但我想我记错了浏览器。对不起!
2021-03-31 23:23:18
为什么不g = document.body呢?
2021-04-07 23:23:18

这是一个使用纯JavaScript ( Source )的跨浏览器解决方案

var width = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;

var height = window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;
@WinEunuuchs2Unix 自从我在 2016 年评论说答案解决了我的问题,为什么切换浏览器很重要?您不能告诉网站访问者切换浏览器。如果网站不起作用,他们就会离开。不< 你不能在 Windows XP 机器上加载最新的 Firefox 浏览器。
2021-03-12 23:23:18
@Randy 旧的 Windows XP 机器不能简单地运行新版本的 Fire-Fox 或其他什么?
2021-03-21 23:23:18
这更好,因为如果您能够在加载过程中足够早地调用脚本(通常是这个想法),那么当 dom 尚未加载时body element它将返回一个值undefined
2021-03-23 23:23:18
哈!旧线程,但感谢您!我想我是那些试图在可能的情况下至少支持回到 IE8 的老“白痴”之一,这是为了让数量惊人的老年家庭用户受益,他们永远不会停止使用 XP,直到他们的机器着火。我厌倦了问问题,而不是得到答案,只用“停止支持 IE8 !!”来投反对票。作为评论。再次感谢!这在我完成的纯 javascript 照片缩放中为我解决了一个问题。它在 IE8 上有点慢,但现在至少它可以工作了!!!:-)
2021-04-05 23:23:18

一种获取可用屏幕尺寸的非 jQuery 方法。window.screen.width/height已经提出,但为了响应式网页设计和完整性的缘故,我认为值得一提的是这些属性:

alert(window.screen.availWidth);
alert(window.screen.availHeight);

http://www.quirksmode.org/dom/w3c_cssom.html#t10

AvailWidthavailHeight - 屏幕上的可用宽度和高度(不包括操作系统任务栏等)。

但是当我们谈论响应式屏幕时,如果我们出于某种原因想使用 jQuery 来处理它,

window.innerWidth, window.innerHeight

给出正确的测量值。即使它删除了滚动条的额外空间,我们也无需担心调整该空间:)