Реализация кнопок возврата AJAX: как они работают? - PullRequest
5 голосов
/ 28 июля 2010

Моя страница до сих пор загружается один раз, а потом все оттуда AJAX, детка: D.Очевидно, что возврат / пересылка / перезагрузка / история / создание закладок серьезно нарушают его.Я исследую некоторые решения (я смотрю на плагины jQuery, также называемые BBQ или Address), и мне интересно, как они реализованы.

Все, что меня серьезно интересует, это функциональность Back / Forward, так какЭто настоящее «приложение» для использования, возможно, 5-6 человек, чтобы помочь координировать свою работу, и никоим образом не формирует или не формирует «веб-документ».Я пытаюсь не допустить, чтобы привычные для обычного пользователя привычки манипулирования окнами ломали мое приложение.

До сих пор я не сталкивался с ситуацией, когда более одного состояния могло бы перейти в другое состояние, и поэтому моя функция возврата имеетбыло довольно просто реализовать.Ни одна из функций возврата не была реализована с использованием функции «Назад», однако только с помощью кнопок «Отмена», «Назад» и других кнопок.

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

Хорошо, больше не отвлекаюсь ... Из этой статьи в Content with Style у меня сложилось впечатление, что я могу использовать таймер для опроса URL-адреса моего окна и запуска соответствующих действий AJAX.

Что мне интересно знать:

  1. Если общие плагины для исправления поломок AJAX назад / вперед используют аналогичный метод, а если нет, то какие методы они используют?
  2. Какие плюсы.и минусыметода опроса, а также любого из альтернативных методов.
  3. Могу ли я реализовать простую версию этих методов, которая позволит достичь моих целей?(скажем, под 150 строк).
  4. Стоит ли делать это самому?Собираюсь ли я узнать что-нибудь ценное, если я это осуществлю?Будет ли моя (теоретически) более простая версия на самом деле намного меньше кода, чем всеобъемлющий плагин?

1 Ответ

2 голосов
/ 28 июля 2010

Если общие плагины для исправления поломки AJAX назад / вперед используют аналогичный метод, а если нет, то какие методы они используют?

Они используют как опрос, так и hashchange событие.

Какие плюсы.и минусыметода опроса, а также любого альтернативного метода.

  • Плюсы опроса : не все браузеры поддерживают hashchange, поэтому он кросс-браузерный
  • Минусы опроса : дороже с точки зрения производительности

Могу ли я реализовать простую версию этих методов, которая позволит достичь моих целей?(скажем, до 150 строк).

Если вы пишете приложение только для 5 человек, возможно, вынудите их использовать современный браузер, поддерживающий событие hashchange.Тогда вы можете написать обнаружение изменения хеша всего за 2-3 строки:)

window.onhashchange = function(event) {
    var url = event.newURL;
    // do something with new url
};

Стоит ли делать это самостоятельно?Собираюсь ли я узнать что-нибудь ценное, если я это осуществлю?Будет ли моя (теоретически) более простая версия на самом деле намного меньше кода, чем всеобъемлющий плагин?

Да, см. Выше.Вы могли бы написать гораздо лучшую реализацию в несколько строк кода.Например, Rails использует router для отправки запросов на контроллеры.Маршруты определяются следующим образом:

"/signup"           -> (UsersController, new)
"/user/(id)/photos" -> (PhotosController, index)

Вы можете определить свой собственный API маршрутизации для регистрации маршрутов и их функций / объектов-обработчиков в JavaScript и делать намного более интересные вещи, чем это возможно с существующими плагинами, только ограниченныепо вашему воображению:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...