Помогите с window.history.pushState - PullRequest
       10

Помогите с window.history.pushState

3 голосов
/ 10 августа 2011

Мне нужна помощь с синтаксисом.

Мой сайт загружает сообщения в блоге внутри #board div, используя AJAX, и я закрываю его, нажимая #close.Когда я загружаю сообщение, URL становится примерно таким: 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 была опечатка.

1 Ответ

4 голосов
/ 10 августа 2011

PushState не является операцией над хэшем. Если вы хотите, чтобы он был

pushState меняет URL-адрес без изменения страницы:

Если вы видите историю в виде массива, history = [];

Вы открываете пустую главную страницу браузера и переходите на page1.html

Теперь история = ['page1.html'].

Если вы запускаете pushState из page1.html с URL-адресом page2.html, история теперь равна ['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-адреса могут заканчиваться указанием в подпапках, которых у вас нет, и поэтому вам нужен какой-то код переписывания .htaccess

...