我使用这个jquery脚本进行Smooth Scroll,但我不知道如何在没有url的哈希(#)的情况下更改锚点的历史记录。
我需要用户使用浏览器的后退和前进按钮,因此,如果没有任何内容可以提取维护这些操作的哈希,我想知道如何更改'#'到' /'在地址栏上。
谢谢!
(function($) {
$.fn.SmoothAnchors = function() {
function scrollBodyTo(destination, hash) {
var scrollmem = $(document).scrollLeft();
window.location.hash = hash;
$(document).scrollLeft(scrollmem);
$("html,body").animate({
scrollLeft: destination
}, 500);
}
if (typeof $().on == "function") {
$(document).on('click', 'a[href^="#"]', function() {
var href = $(this).attr("href");
if ($(href).length == 0) {
var nameSelector = "[name=" + href.replace("#", "") + "]";
if (href == "#") {
scrollBodyTo(0, href);
}
else if ($(nameSelector).length != 0) {
scrollBodyTo($(nameSelector).offset().left, href);
}
else {
// fine, we'll just follow the original link. gosh.
window.location = href;
}
}
else {
scrollBodyTo($(href).offset().left, href);
}
return false;
});
}
else {
$('a[href^="#"]').click(function() {
var href = $(this).attr("href");
if ($(href).length == 0) {
var nameSelector = "[name=" + href.replace("#", "") + "]";
if (href == "#") {
scrollBodyTo(0, href);
}
else if ($(nameSelector).length != 0) {
scrollBodyTo($(nameSelector).offset().left, href);
}
else {
// fine, we'll just follow the original link. gosh.
window.location = href;
}
}
else {
scrollBodyTo($(href).offset().left, href);
}
return false;
});
}
};
})(jQuery);
$(document).ready(function() {
$().SmoothAnchors();
});