2010-03-01 2 views
23

Я просматривал библиотеки JQuery для хеша URL, но не нашел ничего хорошего. Существует «плагин истории», но мы все знаем, что он глючит и не является гибким.Какая лучшая библиотека для создания хеша URL/истории в JQuery?

Я загружаю свои страницы внутри div. Мне нужен способ сделать назад/вперед вместе с хэшированием URL.

mydomain.com/#home 
mydomain.com/#aboutus 
mydomain.com/#register 

Какая лучшая библиотека может обрабатывать все это?

ответ

25

Недавно я просмотрел 3 разных плагина - jquery history plugin, history и jQuery BBQ.

Все они были довольно сложны в настройке, я получил работу jQuery.history, но у нее все еще были проблемы с IE7. Поэтому я перешел на BBQ, и он отлично работал во всех наших целевых браузерах (IE6, IE7, IE8, Fx3).

Поэтому я рекомендую плагин jQuery BBQ.

Редактировать: here's a blog post Я только что написал, что демонстрирует jQuery BBQ с каскадным выпадающим списком.

-4

AFAIK, все плагины истории сделать то же самое:

setInterval(function() { 
    if(theHashChanged) { 
     someFunction(oldHash,newHash); 
    } 
}, 500/*whatever*/); 

Это довольно ядро ​​его (минус браузер взламывает для добавления записей истории без нажатия на ссылку, и т.д.). Это всегда будет ошибкой, потому что это немного взломать, и нет API-интерфейсов перекрестного браузера для обработки изменений истории.

В дополнение ко всему, пользовательский интерфейс для такого рода вещей не очень хорош. Пользователи не понимают, когда им нужно нажать кнопку «Назад» 4 раза, чтобы выйти из страницы.

+1

-1: Совсем не полезно. И с каких пор пользователи ожидают, что обратная кнопка отключит их от страницы? Вы только занимаетесь флеш-сайтами? – nikow

+1

@nikow это основано на моем опыте с большим, публичным лицом. Просто потому, что вы можете реализовать что-то вроде этого, это не значит, что вам нужно. Я честно не могу придумать ни одного сайта, где эта функция более полезна, чем раздражает. – noah

+1

@nikow - «с каких пор пользователи ожидают, что обратная кнопка отключит их от страницы?» Поскольку веб-браузеры и веб-браузеры, где впервые были представлены, я бы сказал;). Нормальная функция задней кнопки - это, конечно, переход от текущей страницы к предыдущей странице. –

0

Мне повезло с reallysimplehistory (nee dhtmlHistory). Это не специфичный jQuery, но он работает в IE, firefox и webkit и не требует большой настройки.

0

Возможно, попробуйте этот плагин истории jQuery: http://www.balupton.com/sandbox/jquery-history/demo/ Он обеспечивает кросс-браузерную поддержку, привязку к хэшам, перегрузку хэшей, все остальное.

Существует также расширение Ajax для него, что позволяет ему легко обновить веб-страницу в надлежащее применение Ajax: http://www.balupton.com/sandbox/jquery-ajaxy/demo/

Это решение выбрано таких сайтов, как http://wbhomes.com.au/ и http://gatesonline.com.au/stage/public/

В целом это хорошо документированы, поддерживаются и многофункциональны. Здесь также был задан вопрос о голосе How to show Ajax requests in URL?

1

Вы пробовали адрес jQuery? От Asual, ребята, которые сделали SWFAdress. Asual - jquery Address

The Address плагин JQuery предоставляет мощные возможности глубоких ссылок и позволяет создавать уникальные виртуальные адреса, которые могут указывать на раздел сайта или состояние приложения.

+0

Я пробовал этот плагин, и у него были проблемы с регистрацией события изменения. – Chev

1

History.js хорошо документирован/поддерживается и поддерживается всеми браузерами.

https://github.com/browserstate/history.js

С сайта:

History.js грациозно поддерживает HTML5 История/Государственные APIs (PushState, replaceState, onPopState) во всех браузерах. В том числе продолжение поддержки данных, заголовков, replaceState. Поддерживает jQuery, MooTools и Prototype. Для браузеров HTML5 это означает, что вы можете изменить URL-адрес напрямую, без необходимости использовать хеши. Для браузеров HTML4 он вернется к использованию старой функции onhashchange .

Смежные вопросы