Javascript 链接到另一个页面(通过URL标签),然后滚动到元素

Javascript 链接到另一个页面(通过URL标签),然后滚动到元素,javascript,jquery,Javascript,Jquery,所以我有一个主页菜单栏,它有一个“功能”锚链接。我的功能部分实际上在同一页上。因此,当用户单击“features”链接时,我有一个jQuery函数,可以将它们向下滚动到页面的该部分。这是应该的 我的问题是,如果我在另一个单独的页面(比如说/联系我们)上使用相同的菜单栏,如果我单击“功能”,显然什么都不会发生。所以我写了这段代码。它查找URL`',然后应该滚动到该DIV-它会短暂地执行此操作。问题是,一旦页面完全加载,页面就会返回顶部 我做错了什么?让他们知道,如果上述不合理 这是我的菜单栏锚:

所以我有一个主页菜单栏,它有一个“功能”锚链接。我的功能部分实际上在同一页上。因此,当用户单击“features”链接时,我有一个jQuery函数,可以将它们向下滚动到页面的该部分。这是应该的

我的问题是,如果我在另一个单独的页面(比如说/联系我们)上使用相同的菜单栏,如果我单击“功能”,显然什么都不会发生。所以我写了这段代码。它查找URL`',然后应该滚动到该DIV-它会短暂地执行此操作。问题是,一旦页面完全加载,页面就会返回顶部

我做错了什么?让他们知道,如果上述不合理

这是我的菜单栏锚:

<a href="/#features">FEATURES</a></span>
*编辑*

所以这不是我的js代码,而是这段js代码。这隐藏了iphone safari栏。似乎在加载时将我的页面滚动到顶部。我怎样才能避免冲突?例如,仅在iPhone上运行此块,但也不要与我的标签URL冲突

// Hides Safari Address Bar on iPhone
window.addEventListener("load",function() {
    // Set a timeout...
    setTimeout(function(){
        // Hide the address bar!
        window.scrollTo(0, 1);
    }, 0);
});

我假设代码来自jQuery mobile之类的库?无论哪种方式,您都可以修改它,使其仅在URL尚未发出方向时工作:

if (window.location.hash.length == 0){
  // Hides Safari Address Bar on iPhone
  window.addEventListener("load",function() {
    // Set a timeout...
    setTimeout(function(){
      // Hide the address bar!
      window.scrollTo(0, 1);
    }, 0);
  });
}
然后,它将仅在未提供哈希标记的情况下执行滚动

我假设页面中已经加载了jQuery库,在这里您可以更改滚动的间隔。它对我有用


您是否将代码放入$(document).ready(function(){…})?是,
$(函数(){})刚刚弄清楚是什么…请参阅我的文章编辑。新问题…您正在使用什么浏览器?是否全部都有?旁注:如果您只关心该部分(而不是使用整个位置的
索引),则应使用
window.location.hash
if (window.location.hash.length == 0){
  // Hides Safari Address Bar on iPhone
  window.addEventListener("load",function() {
    // Set a timeout...
    setTimeout(function(){
      // Hide the address bar!
      window.scrollTo(0, 1);
    }, 0);
  });
}
jQuery(window).ready(function(e){

    // Remove the # from the hash
    var loadTarget = location.hash.replace('#','');

    if(loadTarget != ''){

        var $loadTarget = jQuery('#' + loadTarget);
        jQuery('html, body').stop().animate({
                'scrollTop': $loadTarget.offset().top
            }, 1000, 'swing', function() {

            window.location.hash = '#' + loadTarget;
        });

    }
});