Адрес JQuery: невозможно обработать входящие глубокие ссылки? - PullRequest
0 голосов
/ 06 декабря 2010

Я использую этот плагин с AJAX-загрузкой на моей странице, которая, если честно, обрабатывает все довольно хорошо, за исключением случаев, когда я пытаюсь перехватить входящие ссылки, в которых нет хеш-фрагмента.

Адресная строка
входящая ссылка-> hostname.com/path/
пользователь переходит в другое состояние ajax-> hostname.com / path / #hash
Здесь я ожидаю, что плагин не будет включать путь в адресную строку, потому что хэш представляет это.

AJAX GET
входящая ссылка-> hostname.com/path/
пользователь переходит в другое состояние ajax-> hostname.com/path/
Фактический запрос действительно загружает правильное состояние.

есть ли способ, чтобы он не добавлял путь к адресной строке?
например,
имя хоста / # веб-разработка
вместо:
имя хоста / веб-разработка / # веб-разработки

Обработка кликов

$ ('a.internalLink'). Live ('щелчок', функция (событие) {
event.preventDefault (); clickedLink = $ (this); $ .Address.value (clickedLink.attr ( 'HREF') заменить (основание, '').); });

Ответы [ 2 ]

0 голосов
/ 08 декабря 2010

Я обошел проблему, перенаправив любые не хэшированные URL-адреса в хэшированный эквивалент следующим образом:

if(!window.location.hash){
  window.location.href = 'http://'+window.location.host+'/#'+window.location.pathname+window.location.search;
};

Это не так элегантно, возможно, есть лучшее решение, но оно работает.

0 голосов
/ 06 декабря 2010

Вы должны зафиксировать событие щелчка тега привязки и предотвратить действие по умолчанию, используя event.preventDefault ();

$(document).delegate('a', 'click', function (event) {
    var targetHref = this.href;

    window.location.href = targetHref; // or whatever

    event.preventDefault(); // stop the page changing.
});

Вас также может заинтересоватьновые HTML 5 дополнения, которые позволяют манипулировать историей браузера;то есть вы можете использовать AJAX для обновления страницы, но все равно измените адрес.Подробнее см. здесь (Центр разработчиков Mozilla).

...