Jquery:当#ID位于url末尾时,页面出现时该元素位于浏览器屏幕的顶部,我们可以使其滚动到#ID元素吗?

发布于 2024-10-15 03:32:05 字数 361 浏览 6 评论 0原文

转到我在问题末尾链接的页面,将您发送到 stackoverflow 主页面,但浏览器不会显示页面顶部,它会查找 #h-recent-badges 元素并在该元素位置开始查看页面。

是否可以做到这一点,如果有人通过文章底部评论之一的链接访问我的网站,该人将从页面顶部开始,然后向下滚动到 #ID ,而不是仅仅出现在#ID 处?

当点击页面上的锚链接时,我可以使页面滚动到#ID,但我说的是当有人来自谷歌并带有指向元素#ID 的链接时。

https://stackoverflow.com/#h-recent-badges

Going to the page I have linked at the end of my question with send you to the main stackoverflow page, but the browser wont display the top of the page, it will look for the #h-recent-badges element and start your viewing of the page at that elements position.

Is it possible to make it so if someone comes to my site with a link to one of the comments at the bottom of the article, that it will start the person off at the top of the page, then scroll it down to the #ID, instead of just appearing at the #ID?

I can make the page scroll to an #ID when an anchor link is clicked on the page, but i'm talking about when someone comes from google with a link to an element #ID.

https://stackoverflow.com/#h-recent-badges

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

つ可否回来 2024-10-22 03:32:05

查看 jquery 查询字符串插件:
http://plugins.jquery.com/project/query-object

最新版本有哈希参数解析。

你想要做的是在页面加载后获取哈希参数,然后执行类似的操作
$.scrollTo($("#" + hashValue)).

查看http://flesler.blogspot.com/2007/10/jqueryscrollto.html 获取scrollTo 教程。

Check out the jquery Query String plugin:
http://plugins.jquery.com/project/query-object

The latest version has hash parameter parsing.

What you want to do is to grab the hash parameter once the page loads, then do something like
$.scrollTo($("#" + hashValue)).

Check out http://flesler.blogspot.com/2007/10/jqueryscrollto.html for a scrollTo tutorial.

抱着落日 2024-10-22 03:32:05

我在这里可能是错的,但我相信这种浏览器行为取决于网站加载的速度...

例如,如果我的连接速度较慢,则需要一些时间才能将其加载到可用评论的程度 -只有这样它才能移动到它们(不是在它们实际出现在页面上之前)

您仍然可以尝试使用 jQuery 的 scrollTo 插件 在页面加载时尝试手动滚动页面(可能使用 PreventDefault?)

I might be wrong here but I believe this browser behavior is dependant on the speed which the website is loaded at...

for example, if I have a slower connection, it will take time to load it to the point where comments are available - and only THEN it can move to them (not before they actually apper on the page)

you can still try and use jQuery's scrollTo plugin to try and scroll the page manually (probably using preventDefault?) when page loads

﹂绝世的画 2024-10-22 03:32:05
$(document).ready(function() { 
    if(document.URL.indexOf('#') > 0){
       var link = document.URL.split('#');
       scrollId('#'+link[1])
    }
});
$(window).on('hashchange', function(e){
   if(document.URL.indexOf('#') > 0){
       var link = document.URL.split('#');
       scrollId('#'+link[1])
    }
});

function scrollId(id)
{     
    setTimeout(function(){
        $('html, body').animate({scrollTop: $(id).offset().top - 0 }, 'slow');  
    },500);
}
$(document).ready(function() { 
    if(document.URL.indexOf('#') > 0){
       var link = document.URL.split('#');
       scrollId('#'+link[1])
    }
});
$(window).on('hashchange', function(e){
   if(document.URL.indexOf('#') > 0){
       var link = document.URL.split('#');
       scrollId('#'+link[1])
    }
});

function scrollId(id)
{     
    setTimeout(function(){
        $('html, body').animate({scrollTop: $(id).offset().top - 0 }, 'slow');  
    },500);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文