Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обработка навигации браузера (https://javascript.ru/forum/events/2079-obrabotka-navigacii-brauzera.html)

smmurf 29.10.2008 17:22

Обработка навигации браузера
 
Подскажите, возможно ли отследить и обработать нажатие пользователем кнопок вперед/назад в браузере. Дело в том, что на странице используется нестандартная навигация, и эти кнопки работают не так, как этого ожидают пользователи. Необходимо сымитировать нормальное поведение средствами JavaScript, однако трудность возникла в том, чтобы отследить эти события.

Snipe 30.10.2008 11:52

Посмотрите тут:
http://habrahabr.ru/blogs/webdev/27571/#habracut

Люди делают аякс сайт и им приходится "ручками" обрабатывать путешествия по истории. М.б. пригодиться.

Kolyaj 30.10.2008 13:56

А вообще, это из серии "Сами себе придумали проблему, а теперь думаем, как ее решить.".

smmurf 04.11.2008 01:26

Snipe, спасибо за подсказку.
Kolyaj, нет, а если эта проблема является побочным эффектом какого-то существенного преимущества? -)

Kolyaj 04.11.2008 08:40

Цитата:

Сообщение от smmurf
если эта проблема является побочным эффектом какого-то существенного преимущества?

Обновление контента без перезагрузки страницы чтоли преимущество?

Gvozd 04.11.2008 13:24

Цитата:

Сообщение от Kolyaj
Обновление контента без перезагрузки страницы чтоли преимущество?

Да, причем довольно неплохое. вот 3 плюса навскидку
1)Большая интерактивность, и скорость реакции.
2)пониженый трафик.(если отделить содержимое от верстки совсем, с помощью системы шаблонов, то трафик в сотни раз может уменьшится).
3)практически полная невозможность автоматического грабинга.
обычные HTML-качалки просто выкачают главную страницу и парочку JS-файлов.
против специально написанных граберов, тут же опять таки гораздо проще бротся

Octane 04.11.2008 13:43

Угу только за такое преимущество чаще всего предстоит неприятный разговор с SEOшником и последующая переделка сайта, либо увеличение стоимости услуг по продвижению :D Хотя конечно есть и исключения, например интерфейс GMail и подобное… Использовать AJAX для загрузки всего содержимого страницы или нет, надо решать исходя из конкретной ситуации, где-то это очень сильно навредит, а где-то сделает интерфейс очень удобным.

Gvozd 04.11.2008 13:58

Octane,спасибо, я как-то об этом не вспомнил

Kolyaj 04.11.2008 20:23

Цитата:

Сообщение от Gvozd
1)Большая интерактивность, и скорость реакции.

Чушь.

Цитата:

Сообщение от Gvozd
2)пониженый трафик.(если отделить содержимое от верстки совсем, с помощью системы шаблонов, то трафик в сотни раз может уменьшится).

На нормальном сайте страничка и так не весит больше 20 кб, 90% из которых -- контент. Если gzip использовать, разница становится неощутимой.

Цитата:

Сообщение от Gvozd
3)практически полная невозможность автоматического грабинга.

Отличный пункт. А потом на СЕ-форуме появляются темы "Почему не индексируется мой супер аякс сайт?"

А теперь минусы:
1. Плохая индексация поисковиками (проблема решаемая при правильном подходе).
2. Неоправданно-большое количество скриптов.
3. Нарушение нативной навигации, невозможность поставить закладку, невозможность обновить страницу (некоторые проблемы этого класса решаются, только нафига воротить второй браузер?).
Не полный перечень.

Разумеется это все относится к обычным сайтам, а не к сервисам а-ля GMail, которые и не сайты вовсе. Реализация на аяксе функций а-ля "Добавить в корзину" тоже только приветствуется. Другими словами, всему свое место.

smmurf 05.11.2008 15:46

Цитата:

Другими словами, всему свое место.
Именно так, тоже придерживаюсь этого подхода. :-)
Кстати, большая интерактивность и скорость реакции все-таки имеет место быть. Однако стоит ли она проблем с поисковой оптимизацией, к примеру - уже решается в каждом отдельном случае.

B~Vladi 29.05.2009 12:10

Вот статейка по поводу интерактивных страниц и их экономии/увеличении трафика:

В «Справочнике Веб-разработчика» я написал, что использование Dynamic HTML приводит к уменьшению трафика. Цитирую:

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

Начнем с простого примера: проверки правильности заполнения пользователем экранной формы. Статическая страница, лишенная сценарной поддержки, вынуждена будет вызывать для этого CGI-сценарий сервера, т. е. гонять по Сети данные формы и отклик от сервера, плюс затраты серверного времени на выполнение сценария. DHTML позволяет нам произвести рутинную проверку на стороне клиента (например, убедиться, что поле возраста содержит разумное число). Разумеется, для полной проверки формы может потребоваться обращение к серверной базе данных, но часть действий все равно остается на клиентской стороне и экономит трафик.

В этом же русле лежит и использование компонент ActiveX и реакций (behaviors), которые загружаются только раз, а затем используются страницами без обращения к серверу. Единственной альтернативой им служат Java-аплеты, которые загружаются в каждом сеансе заново.

Теперь перейдем к упомянутому выше аргументу об увеличении трафика. Бесспорно, динамическая страница имеет большую сложность, чем статическая. Бесспорно и то, что она больше ее по размеру за счет сценариев и дополнительной графики. Однако, вопрос состоит в том, по какому критерию сравнивать эти две страницы? По моему мнению, единственным объективным критерием сравнения является информационная емкость страницы, т. е. то количество битов информации, которое она содержит. При таком подходе мы должны будем сравнивать одну динамическую страницу с несколькими статическими, чтобы уравнять их информационную емкость.

Рассмотрим этот тезис на конкретном примере. В качестве примера возьмем головную страницу сайта, который каждый из нас, безусловно, посещал: www.microsoft.com(здесь приводится стр, которая выглядит уже давно по-другому)

HTML-файл этой страницы весит 24К, сценарии - 42К, графика - 25К. Графику мы учитывать не будем, считая, что она загружается только раз, а в дальнейшем берется из кэш-памяти. Получаем, что общий объем динамической страницы равен 66К. На странице расположены:

верхнее меню (4 выпадающих меню, содержащих 22 пункта);
среднее меню (8 выпадающих меню, содержащих 38 пунктов);
левое меню (4 раздела, содержащих 20 ссылок);
поле поиска;
собственно содержание страницы.

Теперь займемся арифметикой. Левое меню, поле поиска и содержание страницы являются статическими и занимают примерно 20К. Прикинем, сколько статических страниц потребуется для размещения остальной навигации (12 меню, 60 ссылок) на том же простанстве, которое она занимает здесь. Сохраняя компоновку страницы, мы можем поместить на нее примерно 15 пунктов меню. Следовательно, нам потребуются 4 статических страницы для обеспечения той же информационной емкости, по 20К каждая, плюс около 4К на текст самих меню, т. е. 84 общего объема против 66К исходного варианта (более 20% экономии):

(60 : 15) x 20K + 4К = 84K
(24К + 42К) : 84К x 100% = 78%
Если бы мы взяли в качестве примера страницы MSDN, в которых левое меню также является динамическим, то экономия превысила бы 50%.

Таким образом, приведенное в начале статьи утверждение следует сформулировать так: грамотное применение Dynamic HTML уменьшает объем удельного трафика между сервером и клиентом, где удельный трафик вычисляется относительно передаваемого пользователю объема информации. Этот тезис имеет и объективное подтверждение. Тот рост объема содержимого Сети, который наблюдается в последние годы, значительно опережает прогресс в развитии технических средств хранения и передачи информации. И если Интернет до сих пор не рухнул под собственным весом, то это объясняется все более широким применением передовых программных технологий, в первую очередь, активной серверной обработки данных и динамическим формированием клиентских страниц.

------------------------------------

И немного от себя.

Цитата:

Сообщение от Kolyaj
1. Плохая индексация поисковиками (проблема решаемая при правильном подходе).

Это не проблема, т.к. решить это легко.

Много читал на эту тему и, думаю, ajax-приложения всё-таки экономят.

Kolyaj 29.05.2009 12:30

B~Vladi,
а почему у вас графика кэшируется, а скрипты -- нет?

B~Vladi 29.05.2009 13:19

это не у меня ;)

Это статья отсюда http://wdh.suncloud.ru/

B~Vladi 29.05.2009 13:20

Кстати оч хороший справочник. Сам им пользуюсь очень давно. Минус один - старый.... со всеми вытекающими. Чудом нашел локальную версию в виде chm. Кому нада - скину;)

Kolyaj 29.05.2009 13:27

Цитата:

Сообщение от B~Vladi
это не у меня

Если цитируете, значит согласны. Да и арифметика там хреновая :)

B~Vladi 29.05.2009 13:50

Цитата:

Сообщение от Kolyaj
Если цитируете, значит согласны

С чего это?! Я привёл мнение одного умного человека. Думаю по-умнее всех нас тут будет.
Цитата:

Сообщение от Kolyaj
Да и арифметика там хреновая

Чё придераешься к мелочам?! "Зри в корень" :D

Kolyaj 29.05.2009 14:32

Цитата:

Сообщение от B~Vladi
Чё придераешься к мелочам?!

Так это основная мысль, остальное вода.

Цитата:

Сообщение от B~Vladi
Я привёл мнение одного умного человека.

Не надо принимать на веру даже то, что написано очень умным, по вашему мнению, человеком.

B~Vladi 29.05.2009 15:14

Kolyaj, то есть вы не согласны с этой статьёй. Можно было сразу так и сказать;) Я не собираюсь никого убеждать...

B~Vladi 29.05.2009 15:18

Цитата:

Сообщение от Kolyaj
Не надо принимать на веру

А кому верить та?! какие книшшки читать?! Статьи?! Где инфу брать?! поделитесь пжлст мануалами:help:

Kolyaj 29.05.2009 15:24

B~Vladi,
я не говорю, что читать ничего не надо, я говорю, что слепо верить нельзя. Читайте, думайте, сопоставляйте с личным опытом, делайте выводы.

З.Ы. Мне, разумеется, тоже слепо верить не надо :)

B~Vladi 29.05.2009 15:29

Цитата:

Сообщение от Kolyaj
я говорю, что слепо верить нельзя

:wacko:
А я и не писал, что я верю ентому дядьке.

B~Vladi 29.05.2009 15:30

Цитата:

Сообщение от Kolyaj
Читайте, думайте, сопоставляйте с личным опытом, делайте выводы.

Согласен.... Так и делаем...

B~Vladi 29.05.2009 15:35

Я вот почитал... подумал... опытов понаставил... и думаю, что в некоторых случаях ajax помогает в вопросе экономии.

Еси чесно, мне не нрав слово ajax... Кто придумал такое слово?! Как оно расшиффровываецца?!... еси чесно не гуглил не енту тем... Я считаю, что нет никакого ajax`a.... Есть js, dom+браузерные объекты/их методы/свойства и старый добрый (x)html+css...

Gvozd 29.05.2009 16:08

Цитата:

Сообщение от B~Vladi
Есть js, dom+браузерные объекты/их методы/свойства и старый добрый (x)html+css..

ну, это вообще-то и есть Ajax
Цитата:

Сообщение от B~Vladi
Как оно расшиффровываецца?!

Ajax- Asynchronous Javascript and XML
сейчас под этим зачастую понимается любое WEB-приложение, основанное на взаимодействии с сервером без перезагрузки страницы
Цитата:

Сообщение от B~Vladi
Еси чесно, мне не нрав слово ajax

ну, уж извините. Как есть. Можете придумать свой Web без Ajax, с блекджеком и шлюхами, и своей терминологией. А в этой области терминология уже устоялась, и ей все пользуются

B~Vladi 29.05.2009 16:29

Цитата:

Сообщение от Gvozd
ну, это вообще-то и есть Ajax

Нет это не ajax:no: Тогда поч никто не грил аб аджаксе(аяксе), када всё это(js, dom+браузерные объекты/их методы/свойства и старый добрый (x)html+css) было?! Стоит добавить один объект в браузер, как все сразу начинают грит о какой-то супер-мега-технологии... Хотя такие вещи уже можно было писать сразу после появления фреймофф... и xml получать, а потом парсить тоже можно было.
Цитата:

Сообщение от Gvozd
блекджеком и шлюхами

каму-чё, как грицца...;)
Цитата:

Сообщение от Gvozd
терминология уже устоялась, и ей все пользуются

И йа даже пользуюсь... И не вижу повода, для того, штопп грить что-то вроде того: "А йа пишу ajax-сайты ыыы... йа крут еп... У мя в резюме +1 крутое слово, которое ниочём не грит."
Я как писал интерактивный интерфейс так и продолжаю... Если йа грю. что знаю js то енто должно подразумевать и знания технологий (а)синхронной передачи данных (или ajax, как все грят).

Kolyaj 29.05.2009 16:44

Цитата:

Сообщение от B~Vladi
Стоит добавить один объект в браузер

Этот объект еще в IE5.5 был.

B~Vladi 29.05.2009 16:47

А ап аякс када заговорили?!

B~Vladi 29.05.2009 16:47

Намноооого позже...

x-yuri 30.05.2009 01:55

Цитата:

Еси чесно, мне не нрав слово ajax
я думаю, это в большой степени маркетинговое название

по поводу принимания на веру авторитетных источников:
Цитата:

fixxxer: внимание, статьи содержат ложную и спорную информацию. При чтении относиться к подозрением к каждому слову.
http://dklab.ru/chicken/nablas/49.html
http://dklab.ru/chicken/nablas/50.html
Цитата:

Я стал ненавитить котера именно изза этой статьи. Я бы за нее руки оторвал.
Цитата:

Я позволил себе то, чего никогда не позволял (кроме случаев со спам-ссылками) - отредактировать и вставить предупреждение.

Объективное обсуждение этой с позволения статьи тут http://groups.google.com/group/highl...9ab6e985e1c00/
Цитата:

P.S. Недавно как раз с другом обсуждали, что если, отталкиваясь от общеизвестных фактов, "немножко" подменять понятия и подтвердить все красивыми бенчами (нарисованными ручками в екселе), а вдобавок еще и постить от сколь-либо авторитетного имени - можно протолкнуть в массы любой бред: у большинства людей (к сожалению) доверие к авторитетам и лень сильнее желания самостоятельно подумать и разобраться
http://phpclub.ru/talk/showthread.ph...529#post847529

Цитата:

А вообще, это из серии "Сами себе придумали проблему, а теперь думаем, как ее решить.".
http://habrahabr.ru/blogs/webdev/27571/#comment_711446

B~Vladi 01.06.2009 12:16

спс за линки...


Часовой пояс GMT +3, время: 17:28.