3

我需要语法方面的帮助。

我的网站使用 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”变量中有错字。

4

1 回答 1

4

PushState 不是对散列的操作。如果您希望它与 < html5 兼容,则需要使用哈希。

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 重写代码

于 2011-08-10T09:42:19.567 回答