Back Button

4 views
Skip to first unread message

Скакунов Александр

unread,
Dec 26, 2007, 5:53:31 AM12/26/07
to ua-devtalk
Привет, IT!

Есть AJAX-приложение. Хочется сделать так, чтобы при нажатии кнопок
Назад/Вперед приложение реагировало сменой состояния. Букмаркить не
надо.

Проблема в том, что большинство решений, в том числе от Yahoo, имеют
два минуса:

1. В УРЛе страницы постоянно меняется идентификатор (видимо, чтобы
можно было букмаркить). Т.е. была страница http://server.com/index.php
- постоянно к УРЛу приписываются якорьки:

http://server.com/index.php#blablabla-state-1
http://server.com/index.php#tralala-state-2

Имхо уродство.

2. (относительно) Запоминается только адрес страницы и несколько
переменных по желанию (ограничение - длина УРЛа). Т.е. если вы со
страницы поиска перейдете по ссылке, а потом нажмете назад - не факт,
что вы получите те же результаты поиска, если не сохраните поисковый
запрос специально.

В противовес всему этому стоит GMail - навигация работает отлично, УРЛ
девственно чист, прошлые состояния запоминает.

Могу предположить, что в GMail по первому пункту активно используется
iframe, а по второму они или явно и скрупулезно запоминают переменные
со значениями, или как-то листают туда-сюда содержимое ирфейма, а за
сохранение его состояния отвечает сам браузер.

Вопрос в том, прав ли я в своих предположениях, и есть ли какая-то
готовая хорошая либа для этого.

Спасибо!

Yevgeniy

unread,
Dec 26, 2007, 5:59:45 AM12/26/07
to ua-de...@googlegroups.com
Готовая либа которая и используется в Гмыле называется - Google web toolkit.
Очень приличный фреймворк который оборачивает AJAX и позволяет педалировать
прямо на Java. Рекомендую, но это конечно для тех кто пишет что-то с нуля
или может позволить себе переписать все приложение.

Sincerely, Yevgeniy Shpika.

Andrey Borovik

unread,
Dec 26, 2007, 6:16:47 AM12/26/07
to ua-de...@googlegroups.com
Александр,

А кто вам сказал, что в гмейле урл девственно чист? Вот пример
типичного урла. Сделал search потом зашел в одно из писем.
http://mail.google.com/mail/#search/rrr/111746722ef09f87
тут не только якорьки, но и кастом RewriteEngine таких урлов. Вопрос
на чем вы пишете?

Андрей

Sergii Voloshyn

unread,
Dec 26, 2007, 6:21:14 AM12/26/07
to ua-de...@googlegroups.com
В Gmail здається якорьки не так давно добавили - для зручності і букмарків а раніше не було AFAIK

On Dec 26, 2007 1:16 PM, Andrey Borovik <andrey....@gmail.com > wrote:
Александр,

А кто вам сказал, что в гмейле урл девственно чист? Вот пример
типичного урла. Сделал search потом зашел в одно из писем.
http://mail.google.com/mail/#search/rrr/111746722ef09f87
тут не только якорьки, но и кастом RewriteEngine таких урлов. Вопрос
на чем вы пишете?

Андрей


On Dec 26, 2007 12:53 PM, Скакунов Александр <I1t...@gmail.com> wrote:
> Привет, IT!
>
> Есть AJAX-приложение. Хочется сделать так, чтобы при нажатии кнопок
> Назад/Вперед приложение реагировало сменой состояния. Букмаркить не
> надо.
>
> Проблема в том, что большинство решений, в том числе от Yahoo, имеют
> два минуса:
>
> 1. В УРЛе страницы постоянно меняется идентификатор (видимо, чтобы
> можно было букмаркить). Т.е. была страница http://server.com/index.php
> - постоянно к УРЛу приписываются якорьки:
>
> http://server.com/index.php#blablabla-state-1
> http://server.com/index.php#tralala-state-2
>
> Имхо уродство.
>
> 2. (относительно) Запоминается только адрес страницы и несколько
> переменных по желанию (ограничение - длина УРЛа). Т.е . если вы со

> страницы поиска перейдете по ссылке, а потом нажмете назад - не факт,
> что вы получите те же результаты поиска, если не сохраните поисковый
> запрос специально.
>
> В противовес всему этому стоит GMail - навигация работает отлично, УРЛ
> девственно чист, прошлые состояния запоминает.
>
> Могу предположить, что в GMail по первому пункту активно используется
> iframe, а по второму они или явно и скрупулезно запоминают переменные
> со значениями, или как-то листают туда-сюда содержимое ирфейма, а за
> сохранение его состояния отвечает сам браузер.
>
> Вопрос в том, прав ли я в своих предположениях, и есть ли какая-то
> готовая хорошая либа для этого.
>
> Спасибо!
> >
>

Dima Dogadaylo

unread,
Dec 26, 2007, 7:13:53 AM12/26/07
to ua-de...@googlegroups.com
On Wed, 2007-12-26 at 13:21 +0200, Sergii Voloshyn wrote:
> В Gmail здається якорьки не так давно добавили - для зручності і
> букмарків а раніше не було AFAIK

Если location не менялся, то откуда тогда появлялась история, которую
броузер использует для Back&Forward?
>
--
Dima Dogadaylo,
http://www.mysoftparade.com/

Скакунов Александр

unread,
Dec 26, 2007, 12:15:21 PM12/26/07
to ua-devtalk
Использую PHP + Ext.js

История появляется из истории ифрейма.

Скакунов Александр

unread,
Dec 26, 2007, 12:19:23 PM12/26/07
to ua-devtalk
> Вот пример типичного урла. Сделал search потом зашел в одно из писем.
> http://mail.google.com/mail/#search/rrr/111746722ef09f87

У меня как ни крути не добавляется. FireFox на винде. А у вас что?

Andrey Borovik

unread,
Dec 26, 2007, 12:46:56 PM12/26/07
to ua-de...@googlegroups.com
И у меня ) Firefox на винде. Кстати проверил и в последнем IE - работает.
Впрочем если вы пишите на PHP то можете взять реализацию паттерна MVC
при помощи Zend_Framework, он может парсить урлы вида /control/action
и перенаправлять в описанные вами методы классов. Их так же можно
дергать и при помощи ajax'а просто не забывайте в конце делать
window.location.href = "/aaa/rrr"; или что там у вас.

Андрей

akel...@gmail.com

unread,
Dec 27, 2007, 3:37:17 AM12/27/07
to ua-devtalk
По моему "уродство" как вы его назвали, является чуть не единственным
нормальным путем. Видеть состояние приложения в УРЛ - полезно и
пользователю

В гмейл вообще куча фреймов и вы просто не видите какие там на самом
деле ужасные адреса =) Кнопка назад работает там далеко не во всех
броузерах, в Сафари к примеру никогда не работала.
Reply all
Reply to author
Forward
0 new messages