используя плагин адреса jQuery и обновление window.location без двойного выполнения address.change - PullRequest
1 голос
/ 30 сентября 2010

У меня есть два события, которые должны быть выполнены в следующем порядке:

  1. вкладки переключаются в / из поля зрения

  2. браузер перемещается к хеш-тегу, как обычно (переход вниз по странице к якору)

И мне нужно, чтобы он работал с кнопкой возврата.

Я написал свою собственную функцию gotoanchor(), которая выполняет первые два, и, поскольку я перехожу на страницу с помощью location.href, ход добавляется браузером в историю браузера.

Мне нужно, чтобы jQuery перехватывал кнопки «назад» и «вперед» и позволял скрывать / показывать вкладки перед прокруткой страницы.

Самый оптимистичный плагин, который я нашел, это jQuery Address

Это мой код в таком виде:

 $("a[href^=#]").click(function(){
        gotoanchor(this.hash);
        return false;
});

$.address.externalChange(function(event) {
    // do something depending on the event.value property, e.g.
    gotoanchor(event.value);
});

У меня 3 проблемы:

  1. обновление location.href считается внешним изменением адреса и выполняет код в ответ на него. Я не могу просто позволить адресу управлять историей, потому что он не прокручивает страницу вниз, где находится хеш.

  2. address тоже хочет обновить хеш самостоятельно. API довольно обширный, и я вполне уверен, что есть способ сказать, что нет, но в документации можно использовать какую-то работу.

  3. это добавляет хеш # / # к моему URL, и я бы предпочел, чтобы это был просто # хэш

Спасибо!

...