【问题标题】:Help with window.history.pushState帮助 window.history.pushState
【发布时间】:2015-09-19 08:26:07
【问题描述】:

我需要语法方面的帮助。

我的网站使用 AJAX 在 #board div 中加载博客文章,然后单击 #close 将其关闭。当我加载一个帖子时,网址变成这样http://www.visualise.ca/#!/anne-au-cherry,当我关闭帖子时我想回到http://www.visualise.ca/。下面给我http://www.visualise.ca/#/

$("#close").live("click", function(event) {
    $("#board").slideUp("slow");
    window.location.hash = "#/";
    window.history.pushState(null,null,site_url+"/");
    return false;
});

1) 有人可以帮忙吗?

2) 如果浏览器不支持 html5 怎么办?

非常感谢您的时间和帮助。

更新:这可行,我的“site_url”变量中有错字。

【问题讨论】:

    标签: jquery pushstate


    【解决方案1】:

    PushState 不是对散列的操作。如果您希望它与

    pushState 正在更改 url 而不更改页面:

    如果您将历史记录视为一个数组,history = [];

    您打开浏览器的空白首页并转到 page1.html

    现在历史是 = ['page1.html']

    如果您使用 url page2.html 从 page1.html 触发 pushState,则历史记录现在为 ['page1.html','page2.html'],并且地址栏显示 page2.html。

    如果浏览器不支持 pushState,它什么也不做。所以对于你的例子:

    $("#close").live("click", function(event) {
        $("#board").slideUp("slow");
        window.history.pushState(null, null, site_url+"/");
        return false;
    });
    

    当你加载你的 ajax 时:

    window.history.pushState(null,null,site_url + "/" + ajax_url);
    

    如果您想使用哈希进行操作,可以执行以下操作:

    $("#close").live("click", function(event) {
        $("#board").slideUp("slow");
        window.location.href = "#/"
        return false;
    });
    

    当你加载你的 ajax 时:

    window.location.href = "#/" + ajax_url
    

    如果您使用 pushState,请注意 url 可以结束 op 指向您没有的子文件夹,因此您需要某种 .htaccess 重写代码

    【讨论】:

    • 我希望我的浏览器在单击#close 时无需重新加载页面即可更改网址。我想要的网址是visualise.ca,但它给出了visualise.ca/#/
    • 那么window.location.href = ""呢?
    • 都是我的错...我的 site_url 变量中有一个类型...!对不起,我让你失去了宝贵的时间:-(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 2018-12-21
    • 2011-06-20
    • 2011-07-28
    • 2011-10-04
    • 2011-08-03
    • 2011-11-27
    相关资源
    最近更新 更多