Javascript 如何阻止机器人';防止浏览器向后滚动
我正在开发jquery移动应用程序,遇到了一些问题;我想使用jquery的animate()轻轻滚动我的应用程序页面的“返回顶部” 下面的代码片段在我的所有测试浏览器中都非常有效,只有一个除外。桌面上的Chrome和Firefox、iPhone上的Safari和Android上的Firefox测试版都不错。动画完成后,默认的Android浏览器(webkit mobile IIRC)会滚动回定位点Javascript 如何阻止机器人';防止浏览器向后滚动,javascript,jquery,android,jquery-mobile,mobile-webkit,Javascript,Jquery,Android,Jquery Mobile,Mobile Webkit,我正在开发jquery移动应用程序,遇到了一些问题;我想使用jquery的animate()轻轻滚动我的应用程序页面的“返回顶部” 下面的代码片段在我的所有测试浏览器中都非常有效,只有一个除外。桌面上的Chrome和Firefox、iPhone上的Safari和Android上的Firefox测试版都不错。动画完成后,默认的Android浏览器(webkit mobile IIRC)会滚动回定位点 $("a[href='#top']").live('click', function() {
$("a[href='#top']").live('click', function() {
$("body").animate({ scrollTop: 0 }, "slow", function() {
// anim complete
setTimeout(function() { // not needed, attempt to brute-force
window.scrollTo(0,0);
alert('foo'); // <- Android scrolls back to anchor after showing alert
}, 50);
});
});
$(“a[href=”#top']).live('click',function()){
$(“body”).animate({scrollTop:0},“slow”,function()){
//动画完成
setTimeout(函数(){//不需要,尝试暴力
滚动到(0,0);
alert('foo');//在阅读一个无关问题的文档时,我偶然发现了这个方法——显然就是为这种情况设计的
以下是我最初的脑死亡解决方案:
function scrollToTop() {
var scrollPos = $(document).scrollTop();
scrollPos -= 60;
if (scrollPos < 1) { scrollPos = 1; }
$.mobile.silentScroll(scrollPos);
if (scrollPos > 1) { setTimeout(scrollToTop, 60); }
}
$("a[href='#top']").live('vclick', function() {
scrollToTop();
return false;
});
函数scrollToTop(){
var scrollPos=$(document.scrollTop();
位置-=60;
如果(scrollPos<1){scrollPos=1;}
$.mobile.silentScroll(scrollPos);
如果(scrollPos>1){setTimeout(scrollToTop,60);}
}
$(“a[href=”#top'])。live('vclick',function(){
滚动totop();
返回false;
});
仍然很好奇为什么Android浏览器希望以原始形式滚动回锚点。是否有效?我也有同样的问题,想知道您是否找到了更好的解决方案,或者这个解决方案是否完美。Cheers我没有看到任何更好的解决方案;这绝对不是完美的,但它满足了我当时的需要。如果您找到了,我会的还有更好的解决方案,我很想听听。:)