我刚刚完成一个网页,但 Mobile Safari(iPhone 和 iPad iOS 5.0.1)中存在一个错误,两个按钮固定在右上角和右下角。
只有在单击打开页面其余部分的文本框上的“提交”后,按钮才会淡入...在加载页面的其余部分并且按钮淡入后,您可以单击其中任何一个,然后他们都工作......
但是,单击它们会导致程序化滚动,滚动完成后,您将无法再单击任何一个按钮,直到您用手指实际滚动页面,即使只是一个很小的像素滚动...
我注意到,在程序化滚动之后,如果您点击“顶部”按钮稍下方的位置,您会看到突出显示,就像您点击“底部”按钮一样,并且处理了底部按钮的操作,这告诉我该错误是以编程方式滚动时,固定位置按钮仍会随页面的其余部分一起移动,并且在执行实际的触摸滚动之前不会返回到其固定位置......
有谁知道解决这个问题的方法吗?
我添加了一个弹出窗口,显示按下了哪个按钮,以便您可以对其进行测试,请记住,在第一次按下向下按钮(有效)后,尝试再次按下,它将不起作用,但请单击向上按钮,您将看到向下按钮操作发生......
感谢您的帮助。
托马斯
(如果你能指出我可以向 Apple 提交错误的位置,那就太好了,除非已经提交过)
编辑:只需单击任一提交箭头,您无需输入默认的工资/薪水
编辑2:这是一个更简单的示例来显示相同的问题..
http://www.tsdexter.com/MobileSafariFixedPosBug.html
编辑 3:向 Apple 报告错误
最佳答案
我们还在 2 个不同的 iPad 应用程序上遇到了这个错误,对我们来说,最好的解决方法是在动画滚动完成后暂时从固定元素中删除固定位置,然后使用 window.scroll 和我们刚才的垂直值执行动画滚动,然后最后重新应用位置固定样式。当 ipad 重新渲染元素时,它确实会导致一个非常小的问题,但它比 bug 更可取。
var $fixedElement = $('#fixedNavigation');
var topScrollTarget = 300;
$("html:not(:animated),body:not(:animated)").stop().animate({ scrollTop: topScrollTarget }, 500, "swing", function(evt) {
$fixedElement.css({ "position": "relative" });
window.scroll(0, topScrollTarget );
$fixedElement.css({ "position": "fixed" });
});
关于jquery - 以编程方式更改scrollTop后固定定位按钮上的移动Safari错误...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752220/