Javascript 在Safari(iOS 7)上,仅在横向缩放下调整事件大小?

Javascript 在Safari(iOS 7)上,仅在横向缩放下调整事件大小?,javascript,safari,resize,ios7,pinchzoom,Javascript,Safari,Resize,Ios7,Pinchzoom,我试图解决一个问题,即我们在iOS 7版本中看到的行为变化,这可能是其他人遇到的 我们有一些代码来处理网站中的调整大小事件。理想情况下,这种方法的工作方式是,如果您正在进行缩放(例如,手机上的收缩缩放),它将不会执行,但如果您调整浏览器窗口的大小,它将被触发 我们发现,在iOS 7设备上,safari在执行收缩缩放时经常触发javascript调整大小事件。这种情况并非总是发生,而且似乎只在横向模式下发生。我们的iOS6设备没有做到这一点,我们手头的任何安卓设备也没有做到这一点。这有两种不良影响

我试图解决一个问题,即我们在iOS 7版本中看到的行为变化,这可能是其他人遇到的

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

我们发现,在iOS 7设备上,safari在执行收缩缩放时经常触发javascript调整大小事件。这种情况并非总是发生,而且似乎只在横向模式下发生。我们的iOS6设备没有做到这一点,我们手头的任何安卓设备也没有做到这一点。这有两种不良影响:

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

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

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

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

但这似乎不起作用

不幸的是,我们必须解决这个问题,因为调整大小中的逻辑需要重新格式化页面。该页面本质上是一个定制的在线报告,具有频繁浏览的横向风格;我们不能只告诉用户不要缩放或旋转手机;-)

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

旁白:有没有人发现最新的7.0.3 safari更新有时不允许您清除javascript警报(即警报上的“OK”按钮不起作用,导致safari挂起)?我知道iOS 7.0.3更新本应修复的警报存在问题,但可能还有其他问题我不知道。当我们进入这种状态时,我们必须重新启动设备。

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

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

我怀疑这些数字是否“神奇”——似乎只要指定了宽度和高度,页面就会跳转。如果没有高度,从设备纵横比计算高度时可能会出现错误,从而导致页面重新布局?(请参阅Kamen Bundev关于中横向模式下错误报告的窗口高度的帖子;不幸的是,我没有发现任何其他引用此特定错误的内容)

我们发现这个问题似乎与HTML将表格并排排列有关。我做过实验,只要视口的宽度足够大,可以让桌子挨着桌子坐,你就很可能看到这个bug