0

当客户端打开其 url 中带有尾随“#something”的页面时,我在脚本中使用一些哈希来滚动到页面的不同元素。问题是当用户使用返回和他的客户端的按钮时。一旦客户搬回来或搬回来,我怎样才能让脚本再次做出反应?

这是代码的相关部分:

// Arrivée avec une ancre
var $h = window.location.hash;
if ($h != '') {
    var $arrh =  {'#home': '#panel_home', '#services': '#panel_services', '#realisations': '#panel_realisations', '#contact': '#panel_contact', '#about': '#panel_about' };
    $('#left').scrollTo($arrh[$h], 500);
}
else {
    $('#left').scrollTo('#panel_home', 500);
}

我希望我的问题是可以理解的......我是法国人,我只是尽力用英语解释我的想法。

我不知道我要问的是否可能,但如果您有想法,欢迎您的帮助!

编辑-0:

'刚刚在那里看到了一个看似相似的讨论:Detecting Back Button/Hash Change in URL 如果我找到解决方案,我会阅读并带回答案(提出的一些链接真的很有趣)。

4

4 回答 4

2

这个 CSS 选择器可能会有所帮助:

#left:target
{
.
.
.
}
于 2012-11-14T11:21:59.277 回答
1

将此代码添加到函数中,并在哈希更改时调用该函数。我不确定我是否完全理解,但从我所做的来看,我认为这对你来说应该很好:

var scrollFunction = function (){
    var $h = window.location.hash;
    if ($h != '') {
        var $arrh =  {'#home': '#panel_home', '#services': '#panel_services', '#realisations': '#panel_realisations', '#contact': '#panel_contact', '#about': '#panel_about' };
        $('#left').scrollTo($arrh[$h], 500);
    }
    else {
        $('#left').scrollTo('#panel_home', 500);
    }
};
window.onhashchange = scrollFunction;
于 2012-11-14T11:17:29.900 回答
1

您还可以尝试使用 jquery 插件,例如开发的 jquery hash-change (https://github.com/cowboy/jquery-hashchange) 或 jquery history (http://tkyk.github.com/jquery-history-plugin/)对于类似的要求

于 2012-11-14T11:21:13.400 回答
0

好吧,满足我需要的解决方案在那个插件中:

http://benalman.com/projects/jquery-hashchange-plugin/

也许它会帮助别人......

ps:真的好用;只需将脚本链接到您的文档并添加如下内容:

$(window).hashchange(function(){
    my_func();
});
于 2012-11-15T00:02:54.080 回答