从Mobile Safari中的window.innerWidth获得不一致的结果

时间:2016-01-06 23:24:04

标签: javascript jquery mobile-safari

我使用此javascript检测浏览器宽度:

$(document).ready(function(){ var width = window.innerWidth; });

似乎给出了不一致的结果。 I've made a working codepen here。通过反复刷新移动版Safari中的full-page view,我收到了以下两种结果:

ios9 Mobile Safari window.innerWidth ios9 Mobile Safari window.innerWidth

它不一致地来回跳跃,并且由于更大的页面尺寸(因此所有图像)而显得更加恶化。有时它只返回一个结果,直到我杀死应用程序并重新打开它。

有没有更好的方法来获得浏览器的宽度?

注意:

  • 我已将此添加到头部:<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
  • 使用$(window).width()对我来说真的不是一个选项,因为它没有考虑滚动条
  • 我知道我可以将js置于超时功能中,但这个解决方案对我来说是有问题的,因为我将结果存储在我在整个网站的不同位置使用的变量中。
  • 我正在使用运行iOS 9.2的iPhone 5

谢谢!

1 个答案:

答案 0 :(得分:1)

Safari因为分辨率而在vanilla javascript中获得不一致的宽度。 JQuery通常对此进行标准化。尝试使用:

$(window).width()

这应该给你正确的宽度。