Javascript 在文档加载时滚动到锚点元素

Javascript 在文档加载时滚动到锚点元素,javascript,jquery,dom,cross-browser,anchor,Javascript,Jquery,Dom,Cross Browser,Anchor,以前有人发布过这个,所以我会重新发布,因为我想看看是否有任何自定义脚本具有此功能。我敢说,这样我就不用自己编码了:P 摘录自: “我已经知道jQuery插件ScrollTo,但到目前为止我还没有找到任何方法来实现以下内容: 用户可以访问我的站点(通过键入,而不是单击我页面上的链接)domain.com/bla.php#foo 现在,我希望用户的浏览器不会自动滚动到“yf-fo”,相反,我要平滑滚动,以便元素“yfo”大约在视图的中间,而不是用户视图的绝对顶部位置。 非常感谢!您可以破解此问题的解

以前有人发布过这个,所以我会重新发布,因为我想看看是否有任何自定义脚本具有此功能。我敢说,这样我就不用自己编码了:P

摘录自: “我已经知道jQuery插件ScrollTo,但到目前为止我还没有找到任何方法来实现以下内容:

用户可以访问我的站点(通过键入,而不是单击我页面上的链接)domain.com/bla.php#foo

现在,我希望用户的浏览器不会自动滚动到“yf-fo”,相反,我要平滑滚动,以便元素“yfo”大约在视图的中间,而不是用户视图的绝对顶部位置。
非常感谢!

您可以破解此问题的解决方案。在右侧添加脚本以获取当前位置。将scrolltop设置为页面顶部,然后在加载页面时添加jQuery.ready(scrollTo)块

伪代码实现如下所示

<head>
  <script src="jquery.js">
  <script>
    var loc = window.location;
    var anchor = getAnchor(loc);
    if (anchor !== undefined) {
      removeAnchor(loc, anchor);
      scrollTo(0);
      $.ready(function() {
        $.scollTo(anchor);
      });
    }
  </script>
  ...

var loc=窗口位置;
var-anchor=getAnchor(loc);
如果(锚点!==未定义){
移除锚(loc,锚);
滚动至(0);
$.ready(函数(){
$.scollTo(主播);
});
}
...

我希望这会在浏览器有机会捕捉到锚之前触发。它可能有效,也可能无效。您可以随意充实自己。

我想唯一真正的解决办法是在滚动机制上附加一些东西,而不是试图自己处理锚元素。因为页面在完全加载之前不会捕捉到锚点。时间足够把滚动机制绑定到一个脚本上了。因为你是唯一一个接近的人,所以我对你竖起大拇指:P