Jquery: Когда #ID находится в конце URL-адреса, появляется страница с элементом в верхней части экрана браузера. Можем ли мы сделать прокрутку до элемента #ID? - PullRequest
0 голосов
/ 01 февраля 2011

Переходя на страницу, на которую я ссылался в конце моего вопроса, отправляю вас на главную страницу stackoverflow, но браузер не будет отображать верхнюю часть страницы, он будет искать элемент #h-recent-badges и начнет просмотр страница в этой позиции элементов.

Можно ли сделать так, чтобы, если кто-то зашел на мой сайт со ссылкой на один из комментариев в нижней части статьи, это заставило человека отключиться в верхней части страницы, а затем прокрутите его вниз до #ID, вместо того, чтобы просто появляться в #ID?

Я могу заставить страницу прокручиваться до #ID, когда на странице нажата якорная ссылка, но я говорю о том, когда кто-то приходит из Google со ссылкой на элемент # ID.

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

Ответы [ 3 ]

0 голосов
/ 01 февраля 2011

Проверьте плагин jquery Query String: http://plugins.jquery.com/project/query-object

В последней версии есть разбор параметров хеш-функции.

Что вы хотите сделать, это получить параметр хеш-функции после загрузки страницы,затем сделайте что-то вроде $ .scrollTo ($ ("#" + hashValue)).

Изучите http://flesler.blogspot.com/2007/10/jqueryscrollto.html для учебника scrollTo.

0 голосов
/ 01 марта 2017
$(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);
}
0 голосов
/ 01 февраля 2011

Я могу ошибаться, но я считаю, что это поведение браузера зависит от скорости загрузки сайта ...

например, если у меня более медленное соединение, потребуется время, чтобы загрузить его в точку, где будут доступны комментарии - и только ТОГДА он может перейти к ним (не раньше, чем они действительно появятся на странице)

вы все еще можете попробовать и использовать плагин jQuery scrollTo , чтобы попытаться прокрутить страницу вручную (возможно, с использованием protectDefault?) При загрузке страницы

...