繁体   English   中英

"为什么 window.innerWidth 不返回正确的值?"

[英]Why isn't window.innerWidth returning the right value?

我正在尝试解决使用 Javascript 来确定浏览器“窗口”宽度的问题。 我知道在这种情况下,不同的人可能意味着不同的东西,所以具体来说,我指的是绿色区域,如本文中所示<\/a>。

我已经阅读了对该帖子的前两个回复以及针对此问题的许多其他 stackoverflow 解决方案,但我都无法开始工作:我正在使用 Firefox 27.0.1,在 1920 像素宽的显示器上最大化窗口. 脚本说我的视口是 1536 像素宽。 我预计是 1920 年(或接近 1920 年)。

根据我所看到的,在我看来,最简单的解决方案是这段代码:

<html>
<head>
<script type="text/javascript">
function onAfterLoad() {
    document.write('<p>Your viewport width is '+window.innerWidth+'</p>');
}
</script>
</head>
<body onload="onAfterLoad();">
</body>
</html>

我认为你应该尝试使用jQuery Dimension Functions。 而是处理Javascript函数。

最基本的是

$(window).width() (获取浏览器的宽度)

$(window).height() (获取浏览器的高度)

希望这可以帮助。

对我来说,这个问题是浏览器缩放的结果。 尝试控制+滚轮,看看这是否会改变你得到的结果。 如果是,请参阅如何在所有现代浏览器中检测页面缩放级别?

检查您的视口元标记。 它应该是:

<meta name="viewport" content="width=device-width,initial-scale=1" />

首先:
确定这是你的视口宽度吗? 您想获得浏览器窗口或整个屏幕的宽度吗? 如果你想获得整个屏幕的宽度,这在JavaScript中是不可能的。
其次:
试试这个来获取浏览器窗口的宽度:

function GetWidth()
{
var width = document.body.clientWidth;
document.write('<p>Your viewport width is '+width+'</p>')
}

如果您将Microsoft Windows 7配置为显示大25%的文本,则Firefox会将您的屏幕报告为实际大小的1 / 1.25倍。 对于实际的1920年,这正好是1536。

(即使画布中的矩形也被画得太大了25%。去过那里,疯了。)

windows 11机器解决方案<\/strong>
转到设置 > 显示 > 缩放和布局,并将其更改为 100%,
之后你应该看到屏幕分辨率作为你的代码输出,
注意:不建议这样做,因为您会遇到难以阅读的文本大小。
解释<\/strong>
一些系统(如 Windows)会缩放应用视口,这是因为现在屏幕每英寸的像素值更密集,所以文本会很小。
为了更深入地了解,想象一个典型的笔记本电脑屏幕宽度为 14 英寸,宽度为 1920 像素。
如果您将字体设置为 20px,那么您的文本将具有以下大小:
text-size-in-inch = font-size-in-pixel * screen-width-in-inch \/ screen-pixels。
因此,如果您进行数学运算,它将是:
英寸文本大小 = 20 * 14 \/ 1920 = .1458333... 英寸。
所以它真的非常小,因此系统倾向于将这些屏幕缩放 125%,也就是说,在你的情况下,你的屏幕宽度将是 = 1920 \/ 125% = 1536 px
推荐<\/strong>
您应该调整您的代码以使用任何屏幕分辨率

"

你的代码适合我。 它说1600(我有一个1600 x 900的屏幕)。 调用代码时,浏览器是否最大化? 也许你的分辨率是1536 x的东西,你的屏幕拉伸了吗? 我会在你的屏幕设置中查看它。 另一种尝试方法是打开Chrome和Devtools,然后调整浏览器的大小。 它将显示浏览器窗口尺寸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM