Javascript 防止iOS处理某个服务器上的焦点事件<;输入>;

Javascript 防止iOS处理某个服务器上的焦点事件<;输入>;,javascript,ios,css,Javascript,Ios,Css,假设iOS通过滚动/断开位置:fixed来响应,有没有办法阻止iOS/Safari接收该事件?我已经尝试了无数的解决这个bug的方法,但是没有一个适合我们的用例。我确实需要输入来获得一个:focus伪类,并且在它被聚焦的那一刻调用blur并不能完全起作用,但是任何其他建议都将不胜感激 对于某些背景,我们有一个自定义键盘,在这里我们隐藏iPad键盘(使用输入上的属性readonly),键盘固定在屏幕底部。除了页面高度大于iPad屏幕高度,如果有人点击输入,我们的自定义键盘会跳到页面底部看不见的地方

假设iOS通过滚动/断开
位置:fixed
来响应
,有没有办法阻止iOS/Safari接收该事件?我已经尝试了无数的解决这个bug的方法,但是没有一个适合我们的用例。我确实需要输入来获得一个
:focus
伪类,并且在它被聚焦的那一刻调用
blur
并不能完全起作用,但是任何其他建议都将不胜感激


对于某些背景,我们有一个自定义键盘,在这里我们隐藏iPad键盘(使用输入上的属性
readonly
),键盘固定在屏幕底部。除了页面高度大于iPad屏幕高度,如果有人点击输入,我们的自定义键盘会跳到页面底部看不见的地方之外,它工作得非常好。我目前有一个变通办法,我们可以切换到
位置:绝对
,但我们有这么多页面,要计算自定义键盘的位置,使其每次都出现在iPad屏幕底部,这并不理想/容易出现错误。注意:我不需要这个解决方案在iPhone/Android上工作。

这是一个相当大的难题,但它似乎可以工作:

body, html {
    margin: 0;
    overflow: auto;
    height: 100%;
    -webkit-overflow-scrolling: touch;
}
只需将此添加到CSS中。我需要删除边距,不确定这是否会影响您的设计。如果是这样,您可以尝试添加填充,但我没有尝试

这样做的目的是防止html元素滚动,欺骗Safari,因为它似乎只是试图在最外层的元素中进行滚动

如果html没有滚动,我需要添加向后滚动,因此我将其应用于主体。这会使滚动失去动力,要将其添加回去,您需要
-webkit溢出滚动:触摸
的东西

因此,为了更清楚地了解发生了什么,代码应该是这样的-但我还没有尝试过:

html {
    margin: 0;
    overflow: hidden;
    height: 100%
}
body {
    margin: 0;
    overflow: auto;
    height: 100%;
    -webkit-overflow-scrolling: touch;
}

你能提供一个工作演示重现这个问题吗?动态计算绝对位置。使用jQuery并更新它的滚动条顶部。非常感谢!!第二个例子有效。我在其他SO页面上尝试了一些
html/body
解决方案,但都不起作用。它工作得很漂亮,而且仍然可以滚动。哇,你让我的一天/一周过得更好!希望苹果不会为了防止这种情况而改变它!我爱你!!!!非常感谢:)。