【问题标题】:Loading a page from hash on refresh刷新时从哈希加载页面
【发布时间】:2016-04-09 20:44:45
【问题描述】:

所以我使用 JQuery 库编写了这段 JavaScript。它的功能是让页面加载到 div 内部而不是整个页面(以便更轻松地修改布局)。

我已经做到了,所以它成功地将“文件 URL”保存在哈希中,并且我已经做到了,所以它可以正确加载,但我终生无法弄清楚如何转到该页面。

当我尝试转到名称中带有哈希的页面时(例如刷新页面或通过链接/URL),它会在彼此内部复制自己(我认为)两次。您可以在 overeten.be 现场看到它,然后尝试刷新随机页面除了主页面。

有人可以帮我解决这个问题吗?提前致谢!

$("document").ready(function(){
    $('._body').load("pages/default.html");

    var locationhash = window.location.hash.replace('#','');

    if ((locationhash=='pages/default.html')||(locationhash=='')){
        console.log("no page, "+locationhash);
    } else{
        $('._body').load(window.location.hash);
        console.log(locationhash);
    }
    $('.menubundle a,  footer a').on('click', function (e) {
        e.preventDefault();
        var page = $(this).attr('href');
        $('._body').fadeOut(1000,function(){
            document.location.hash = page;
            $('._body').load(page).fadeIn(1000);
        });
    });
});

【问题讨论】:

    标签: javascript jquery html hash


    【解决方案1】:

    问题出在这一行:

    $('._body').load(window.location.hash);
    

    如果你检查 window.location.hash,你会得到:

    window.location.hash
    "#pages/over_eten/feit.html"
    

    该 URL 指向当前页面。你真正想要的是:

    window.location.hash.slice(1)  // Skip the first character
    "pages/over_eten/feit.html"
    

    顺便说一句,我觉得你有两次调用 $('._body').load() 对我来说很奇怪。第一个似乎属于 console.log('No page...') 的正上方。

    【讨论】:

    • 可悲的是,这不是问题。我知道那是一回事,所以我添加了这一行; var locationhash = window.location.hash.replace('#',''); 将第一个“#”替换为空(有效地删除它)。此外,两个.load 函数是先加载默认页面,然后再加载请求的页面,但我会移动它,因为当问题得到回答以避免混淆时,它可能会更好。无论如何,感谢您的努力:) 编辑:哎呀,现在我看到了你的想法。我写了window.location.hash 而不是locationhash 变量。已经解决了,谢谢!
    猜你喜欢
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 2013-11-11
    • 1970-01-01
    • 2015-11-08
    • 2013-06-20
    • 1970-01-01
    相关资源
    最近更新 更多