Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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 jQuery scrollTop()在移动浏览器上的滚动DIV中不起作用,其他选择?_Javascript_Jquery_Html_Scroll_Mobile Browser - Fatal编程技术网

Javascript jQuery scrollTop()在移动浏览器上的滚动DIV中不起作用,其他选择?

Javascript jQuery scrollTop()在移动浏览器上的滚动DIV中不起作用,其他选择?,javascript,jquery,html,scroll,mobile-browser,Javascript,Jquery,Html,Scroll,Mobile Browser,我正在尝试滚动到滚动分区中的特定位置。现在我正在使用jQuery scrollTop()函数的像素偏移量,该函数在桌面浏览器上非常有效,但在android手机浏览器上不起作用,除了谷歌的Chrome android浏览器(没有iOS设备来测试它是否有效)。我找到的所有解决方案都是用于页面(窗口)滚动,而不是用于在DIV中滚动,有人对我还可以使用什么来完成相同的任务有什么建议吗 下面是一个例子: 我在桌面浏览器中尝试过的其他方法: document.getElementById('ID_of_

我正在尝试滚动到滚动分区中的特定位置。现在我正在使用jQuery scrollTop()函数的像素偏移量,该函数在桌面浏览器上非常有效,但在android手机浏览器上不起作用,除了谷歌的Chrome android浏览器(没有iOS设备来测试它是否有效)。我找到的所有解决方案都是用于页面(窗口)滚动,而不是用于在DIV中滚动,有人对我还可以使用什么来完成相同的任务有什么建议吗

下面是一个例子:

我在桌面浏览器中尝试过的其他方法

document.getElementById('ID_of_element_in_a_DIV').scrollIntoView();
document.getElementById('ID_of_DIV').scrollTop = 200;
2013年11月3日编辑:

这是一个已知的android浏览器问题:

bug报告中的一位用户建议了一种解决方法:

因为问题似乎只在溢出属性为 设置为滚动,您可以先将其设置为“隐藏”,然后设置滚动顶部 属性,然后将其重置回“滚动”(或自动)。滚动顶部 属性似乎在使用重新呈现元素时得到尊重 滚动条。目前尚不清楚这是否有任何意外的副作用, 但是“它在我的机器上工作!”


我有一些解决方案供你尝试。您必须自己测试它们,因为我以前没有在移动浏览器中尝试过它们,但它们如下所示:

  • 使用jQuery的
    .css()
    方法(或
    .animate()
    ,具体取决于您的最终目标)调整顶部边距(注意:您必须将溢出更改为隐藏,并将文本包装在一个内部div中,该div将是要调整其边距的元素)
  • 执行与第一个解决方案相同的操作,只是将嵌入div的位置设置为相对,并调整其
    top
    属性
  • 让我知道,如果你需要任何帮助,如果这或有任何更多的问题。祝你好运!:)



    请注意,尽管我在基于CSS标准(而非jQuery函数)之前没有在mobile中测试过这些功能,但它们应该可以工作。

    一个对我有效的工作环境:首先,暂时将overflow属性设置为“hidden”,然后设置scrollTop属性,然后将overflow属性设置回“scroll”(或auto)。当overflow属性设置回“scroll”时,scrollTop值似乎保持不变并得到尊重。这是一个非常简单的解决方法,适用于我测试的所有浏览器(桌面和移动)。我没有对它进行详尽的测试,也没有在适当的位置进行转换测试,所以可能会有我没有遇到的副作用。。。您的里程数可能会有所不同,但这很容易尝试。

    尝试使用jQuery的。动画方法:

    $('.div').animate({ scrollTo: x; });
    
    其中x等于要滚动到其顶部的div的位置。

    是否尝试了此操作

    $("html").scrollTop(0);
    

    我也遇到了同样的问题,通过使用jquery
    .offset()
    解决了这个问题

    jQuery(文档).ready(函数($){
    $(“.scroll”)。单击(函数(事件){
    event.preventDefault();
    $('html,body').animate({scrollTop:$(this.hash.offset().top},1500);
    });
    });
    
    按照@Allan Nienhuis'答案中的建议,临时将
    溢出
    属性设置为“隐藏”,在Android
    4.0.3
    上不起作用,例如(例如,Kindle Fire 2s正在运行的内容)-当您将
    溢出
    设置回
    滚动
    时,元素会滚动回顶部

    备选方案:

    • 通过一个助手函数滚动您自己的滚动,正如所演示的-虽然这很容易实现,但它是简单的,因为它不会给您惯性滚动或过度滚动

    • 使用一个库,例如,它基于CSS转换实现自己的复杂滚动(惯性滚动、过滚动)


    不过,使用iScroll需要一些设置:您需要一个高度和样式固定的包装器
    div
    overflow:hidden
    ,要滚动的元素应该没有
    overflow
    样式。显示它是如何完成的。

    使用以下代码:

    $("body").animate( { scrollTop: 50,  },  800,  function(){
        $("body").clearQueue();
    } );
    
    这对我很有用:

    setTimeout( function() {
        $(div).scrollTop(0)
    }, 500 );
    
    我在这里找到了答案

    手机不理解
    $('html,body')
    ,所以你可以对手机执行以下操作

    if(navigator.userAgent.match(/(iPod|iPhone|iPad|Android)/)) {           
        window.scrollTo(0)
    } else {
        // default `$('html,body')` code for scrolling
    }
    


    只需使用
    $('body')
    而不是
    $('html,body')
    在Galaxy选项卡上实现滚动到页面顶部的唯一方法是在滚动时将页面
    body
    隐藏100毫秒。使用jQuery:

    $("body").hide();
    window.scrollTo(0, 0);
    setTimeout(function(){ $("body").show() }, 100);
    

    我建议不要使用scroll、scrollTo或scrollTop方法(这会在mobile中给我带来问题),而是在顶级DOM元素(如#top)上设置一个ID,然后只使用:

    document.getElementById("top").scrollIntoView();
    

    到目前为止,这在所有设备和浏览器中都是最适合我的解决方案。

    这些解决方案不适合我。我知道有人提到移动检测,但他们的方法对我不起作用。我终于明白了使用移动检测为每个案例提供两种不同的CSS样式。也许不太理想,但它确实有效。用上面建议的js临时更改样式对我来说不起作用

    我有一个独立滚动div的两列布局,每个div都设置为overflow:scroll,body必须设置为overflow:hidden。我需要在其中一列上使用scrollTop,但解决方案无效


    我使用了wp_is_mobile()(Wordpress函数),如果mobile为true,则从body中删除overflow:hidden,并删除带有overflow:scroll的div。最后,scrollTop可以在手机上使用。

    它可以在IOS上使用safari和ChromeF。对于需要滚动整个文档的用户(如我),可以使用$(“body”)。scrollTop(0)在html或div元素上尝试不起作用。我在三星Galaxy S3的内置浏览器中尝试过,效果很好。嘿,很高兴看到这里引用了我的解决方法。:)这种变通方法似乎仍然是我发现的让它在r中工作的唯一方法
    $("body").hide();
    window.scrollTo(0, 0);
    setTimeout(function(){ $("body").show() }, 100);
    
    document.getElementById("top").scrollIntoView();