0

我正在尝试解决我们在 iOS 7 版本中看到的可能其他人遇到的行为变化的问题。

我们有一些代码可以处理我们网站中的调整大小事件。理想的工作方式是,如果您正在执行缩放(例如,在手机上进行捏拉缩放),它将不会被执行,但如果您调整浏览器窗口的大小,它将被触发。

我们发现,在我们的 iOS 7 设备上,当我们进行捏缩放时,s​​afari 经常触发 javascript resize 事件。这不会一直发生,似乎只发生在横向模式下。我们的 iOS6 设备没有这样做,我们手头的任何 Android 设备也没有。这些有两个不良影响:

1)它似乎会导致页面“跳转”,即它会突然重新定位页面,通常是左上角。请注意,即使我们没有调整大小事件处理程序,也会发生这种情况。

我不认为这是我们的页面布局。我们一直特别小心地避免可能导致小数像素和百分比高度和宽度等行为的事情。此外,我们可以通过将视口宽度(通过 META 标签)设置为 700 像素或更小来消除这种行为。另外,如前所述,我们在配置文件中看不到任何此类问题。(我们没有设置任何其他视口设置,所以这不是问题;设置“width=client-width”对我们没有帮助。

2) 似乎在调整大小处理程序中,它并没有真正为我们提供 window.innerWidth 的预期值;即我将被放大,它会给我一个大于预期的值。例如,我通常使用这样的方法来确定我们是否正在缩放:

abs(1 - document.documentElement.clientWidth / window.innerWidth) < 0.02

但这似乎在这里不起作用。

不幸的是,我们将不得不解决这个问题,因为我们调整大小的逻辑会重新格式化页面。这个页面本质上是一个自定义的在线报告,经常查看横向样式;我们不能只告诉我们的用户不要缩放或旋转他们的手机;-)

有没有人遇到过这些问题?如果是这样,您是如何解决的?

顺便说一句:有没有人发现最新的 7.0.3 safari 更新有时不会让您清除 javascript 警报(即警报上的“确定”按钮不起作用,导致 safari 挂起)?我知道应该通过 iOS 7.0.3 更新修复的警报存在问题,但也许还有其他我不知道的问题。当我们进入这种状态时,我们必须重新启动设备。

4

1 回答 1

0

以下是我们如何让横向模式下的“页面跳转”消失。这不是一个“好”的解决方案,因为我们不知道它为什么有效。我们将视口元标记设置为以下内容:

<meta name="viewport" content="width=1920 height=1080"/>

我怀疑这些特定的数字是“神奇的”——似乎只要指定了宽度和高度,页面跳转就会消失。也许没有高度,从设备纵横比计算高度会导致页面重新布局的错误?(请参阅 Kamen Bundev 关于横向模式下错误报告的窗口高度的帖子http ://www.kendoui.c​​om/forums/kendo-ui-mobile/application/ios-7-safari-window-height-.aspx ;不幸的是我没有'没有找到任何其他引用此特定错误的内容)。

我们发现这个问题似乎与 HTML 表格并排排列有关。我已经做过实验,只要视口宽度足够大以允许桌子并排放置,您就可能会看到该错误。

于 2013-11-01T21:17:03.070 回答