Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iOS 7 Mobile Safari键盘上下滚动事件的问题_Javascript_Html_Ios_Safari_Mobile Safari - Fatal编程技术网

Javascript iOS 7 Mobile Safari键盘上下滚动事件的问题

Javascript iOS 7 Mobile Safari键盘上下滚动事件的问题,javascript,html,ios,safari,mobile-safari,Javascript,Html,Ios,Safari,Mobile Safari,我正在测试一些滚动事件,并注意到在iOS 7 Mobile Safari中,有一个滚动事件在键盘上启动,而不是在键盘上/下启动。我想知道是否有人知道这是为什么 我个人认为这是一个bug(我正在尝试报告它,但目前无法登录到bug tracker),他们应该选择在键盘上上下滚动事件,或者选择根本不抛出它们,因为视图似乎返回到以前的状态 为了演示这个问题,我创建了一个小网站,在这个网站上,你可以点击输入框,看到一个滚动事件在键盘上启动,但在键盘菜单上按“完成”时不会启动,屏幕会滚动到它的初始位置。我添

我正在测试一些滚动事件,并注意到在iOS 7 Mobile Safari中,有一个滚动事件在键盘上启动,而不是在键盘上/下启动。我想知道是否有人知道这是为什么

我个人认为这是一个bug(我正在尝试报告它,但目前无法登录到bug tracker),他们应该选择在键盘上上下滚动事件,或者选择根本不抛出它们,因为视图似乎返回到以前的状态

为了演示这个问题,我创建了一个小网站,在这个网站上,你可以点击输入框,看到一个滚动事件在键盘上启动,但在键盘菜单上按“完成”时不会启动,屏幕会滚动到它的初始位置。我添加了一个可扫描的二维码,可以将您发送到下面的测试url。提前谢谢

测试URL:


测试qr:

您使用的是phonegap还是什么? 如果您正在将phonegap与iscoll.js一起使用,那么您只需要在设备中触发键盘事件时刷新滚动条

以下是键盘事件的链接:

在关闭键盘时,您只需调用以下代码:

window.scrollTo(0, 0);

前几天在Phonegap应用程序中遇到了这个问题,但这种行为似乎也与新的Safari一致

据我所知,新的Safari会在键盘打开时调整报告给网页的视口的大小。我有一个高度为100%的页面,导航绝对位于页面底部。当键盘出现时,导航也随之出现。令人烦恼的是,这导致我的2个输入字段失去焦点,隐藏它们,使登录无法完成

以前,我避免在viewport meta标记中使用height=device height,因为旧的Safari似乎不了解状态栏的任何内容,并且报告的设备高度总是20px太高,导致20px的滚动可以看到页面的最底部

我最终使用的修复方法是设置height=设备高度,iOS7在视口大小调整/nav重叠方面没有任何问题。令我惊讶的是,页面在所有情况下都保持了100%的设备高度

<meta name="viewport" content="width=device-width, height=device-height, user-scalable=no">

为了使这种固定高度的情况与iOS5和ios6保持一致,我进行了一些设备检测,并手动计算了设备高度-20px,重置了视口标记

function iOSversion() {
  if (/iP(hone|od|ad)/.test(navigator.platform)) {
    // supports iOS 2.0 and later: <http://bit.ly/TJjs1V>
    var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
    return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
  }
}

ver = iOSversion();

if (ver[0] >= 5 && ver[0] <= 6) {
  $('head meta[name="viewport"]').attr("content", "width=device-width, height="+(window.innerHeight-20)+", user-scalable=no")
}
函数iOSversion(){
if(/iP(hone | od | ad)/.test(navigator.platform)){
//支持iOS 2.0及更高版本:
var v=(navigator.appVersion).match(/OS(\d+)\uD+)\uD+(\d+)/);
返回[parseInt(v[1],10),parseInt(v[2],10),parseInt(v[3]| | 0,10)];
}
}
ver=iOSversion();

如果(ver[0]>=5&&ver[0]iOS7是有史以来最糟糕的浏览器。我认为他们应该把它回滚……让我们不要忘乎所以,这里仍然有IE6在浮动……:pOh我甚至想都没想:pI正在努力解决同样的问题(即试图停止那些讨厌的滚动事件)祝你好运,如果我发现了什么,我会让你知道的!你可能也想看看这个主题-。它不完全一样,但足够好的想法。这是没有电话差距。纯JS。我应该试试。会让你知道的!