Плагин Jquery Address: как избежать изменения истории? - PullRequest
0 голосов
/ 22 марта 2012

Краткий вопрос:

Я пытаюсь сделать так, чтобы на заданной странице (использует вкладки) кнопка «Назад» не изменяла URL страницы (историю).Это мне нужно, когда пользователь нажимает кнопку возврата , вкладка меняется, но не отображается URL.Как я могу сделать это с помощью плагина Address?

Длинный вопрос:

В дополнение к объяснению выше, я должен сказать, что я использую плагин адреса какэто:

$.address.strict(false);
$.address.externalChange(function(e) {
    changePageFunction(e.value);
});

Внутри этого changePageFunction () Я устанавливаю $.address.title(the_title); и $.address.value(the_value);.Я попытался изменить прямой вызов на changePageFunction () примерно так:

$.address.externalChange(function(e) {
    if (!isTabsPage) {
        changePageFunction(e.value);
    } else {
        changeTab();
    }
});

Это работает, но отображаемый URL изменяется (возвращается на одну позицию для каждогонажата кнопка назад).

Я не могу:

  • добавить разные URL-адреса для каждой вкладки (как в $ .address samples)
  • изменить плагин адреса для других похожих
  • изменить текущую систему подкачки (немного сложная)

Идея состоит в том, что если isTabsPage имеет значение true, то функция changeTab () будет работать, если неттекущий метод будет работать ($ .address History Управляемый)

Есть ли способ заморозить историю?

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

HTML5 имеет собственный объект истории, чтобы справиться с этим. Вам нужно будет использовать его функцию pushState, когда пользователь меняет вкладки, и обрабатывать его событие popState, когда пользователь перемещается вперед / назад. @Balupton предлагает замечательный полифил для старых браузеров .

0 голосов
/ 22 марта 2012

У вас нет контроля над кнопкой возврата браузера. Если вы установите хеш в первую очередь, браузер ВСЕГДА сможет изменить хеш с помощью кнопки возврата. Единственный вариант - захватить хеш и изменить его вручную, что приведет к нарушению функциональности кнопки «назад» из-за создания циклов и т. Д.

Это не имеет никакого отношения к jQuery. Все, что делает jQuery - это манипулирует свойством location.hash.

http://www.ezineasp.net/post/Javascript-Location-Hash-with-Example.aspx

почему вы хотите это сделать? Состояние вашего приложения должно быть отражено в хэше.

...