top*_*erg 11 jquery scrolltop windows-phone-8
我写了一个网站,它有一个将用户视图滚动到页面顶部的功能.有问题的电话是:
$('html,body').animate({scrollTop:0}, 150, 'swing');
Run Code Online (Sandbox Code Playgroud)
这适用于所有桌面浏览器,但在Windows Phone上,它只向用户滚动约180像素,然后停止.我试过用以下函数替换函数:
$('html,body').scrollTop(0);
Run Code Online (Sandbox Code Playgroud)
它在桌面上捕捉到顶部,但它在电话上滚动到顶部.我相信Internet Explorer Mobile需要尝试平滑地滚动动画,并导致问题.如果是这种情况(或者如果没有,有人可以纠正我),我如何覆盖此功能以使动画生效?
编辑
虽然它不理想,但似乎在有限的容量下工作,我用这个替换了滚动代码:
$('html,body').animate({scrollTop:0}, 150, 'swing', function() {
$('html,body').scrollTop(0);
});
Run Code Online (Sandbox Code Playgroud)
但是,如果有一个选项可以以编程方式禁用Mobile IE中的平滑滚动,那将是一件好事.
在Windows Phone 8上,我遇到了同样的问题.我目前正在做以下hack,它等待动画"完成",然后执行标准window.scrollTo以确保它滚动到正确的位置.
scrollHmtlBody: function (scrollToTarget, duration) {
$('html, body').animate({ scrollTop: scrollToTarget }, duration);
// Windows Phone doesn't animate properly,
// this makes sure it scrolls to the appropriate position (eventually)
setTimeout(function() {
window.scrollTo(0, scrollToTarget);
}, duration + 75);
}
Run Code Online (Sandbox Code Playgroud)
我对结果不满意 - 它有效,但由于75毫秒的延迟,它在"完成"滚动动画之前犹豫不决.由于延迟较少,Windows Phone显然拒绝执行scrollTo操作(也许它认为它当前正在"滚动"?)
我可能最终会使用带有设备检测的if/else子句,但是现在我正试图找到一个更好的解决方案,而不是沿着那条路走.
归档时间: |
|
查看次数: |
4855 次 |
最近记录: |