javascript - window.outerWidth 在 iOS 10 beta 上的 Safari 中为 0

标签 javascript ios ios9 ios10

我使用安装了 iOS 10 的 iPad,在浏览器控制台中输入 window.outerWidth 并得到值 0。 OTOH,window.innerWidth 正确生成了 1024(横向模式)。

在 iOS 9 中,window.outerWidth 正确地生成了 1024,所以这只是 iOS 10 beta 中的一个错误,还是这个属性有一个微妙的地方,我'我不见了?

最佳答案

问题不仅仅出在 iOS 10 Beta 上,但我怀疑 Apple Devs 是否应该优先解决这个问题,因为 iOS 设备的浏览器窗口两侧并没有真正的外部框架,所以 window .innerWidthwindow.outerWidth 相同。

要查看此功能在不同上下文中的工作情况,您可以在浏览器中弹出检查器并模拟较小的设备。内部宽度将等于页面宽度,而外部宽度将等于打开的浏览器的整个宽度。

如果您仍然需要使用 outerWidth,您可以做的替代方法是使用以下方法检查屏幕宽度:

let mq = window.matchMedia( "(min-width: 1025px)");

如果您在桌面上,

mq.matches 将评估为 true,然后您可以将 outerWidth 用于桌面和 innerWidth 用于移动设备。或者你可以像这样为你做一个替代函数:

let screenWidth = () => {
  const mq = window.matchMedia( "(min-width: 1025px)" );

  if (mq.matches) {
    return window.outerWidth;
  } else {
    return window.innerWidth;
  }
}

请注意,1025px 在横向方向上比 iPad Air 2 多 1 个像素。

关于javascript - window.outerWidth 在 iOS 10 beta 上的 Safari 中为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39416855/

相关文章:

javascript - 如何从未知数量的文本字段创建 OnChange "totaling"函数

javascript - 为什么 math.bignumber() 返回一个对象?我该如何使用它?

iphone - 从不同线程访问 UIView 的简单快捷方式

swift - 如何快速检测 AVPlayer 何时开始/停止播放

iOS 9 UIImagePickerController statusBar 白色

swift - Healthkit enableBackgroundDeliveryForType不可用,无法每小时计算心率

javascript - 在 C3/D3 中修改圆环图切片

ios - 快速表格 View 向单元格添加自定义复选标记并从上一个单元格中删除复选标记

iphone - 将 iPhone 与 2 个低能耗设备连接

javascript - 如果 ng-click 附加到提交按钮,则表单不验证