AJAX и кнопка возврата в браузере

Я запускаю браузерную игру на сайте www.darknovagames.com. Недавно я работал над переформатированием сайта с помощью CSS, пытаясь проверить все его страницы в соответствии со стандартом HTML.

Я раздумывал над этой идеей, чтобы меню навигации было расположено слева на AJAX страницах (вместо того, чтобы каждый раз переводить пользователя на отдельную страницу, требуя перезагрузки заголовка и панели навигации, которые почти никогда не меняются), и я знайте, что если я это сделаю, я, вероятно, сломаю кнопки Вперед / Назад в браузере. Мой вопрос, как я предполагаю, заключается в том, следует ли мне продолжить и использовать AJAX для сайта, тем самым требуя от пользователя использовать навигацию по сайту для игры, или я должен оставить сайт в его нынешнем виде и использовать стандартные гиперссылки и другие вещи для навигации?

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

Я также открыт для предложений. Есть ли стандартный (желательно без традиционных фреймов) способ перезагрузки только основной области сайта, при этом изменяя URL-адрес, чтобы пользователи могли делать закладки, пересылать / назад и т. д.? Это потенциально могло бы решить мою проблему. Я просто прошу здесь лучшее решение, а не ответ на конкретный вопрос. ^ _ ^

Спасибо

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
33
0
27 705
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Используйте ajax для частей страницы, которые необходимо обновить, а не для всей страницы. Для этого вам следует использовать шаблоны.

Если вы хотите сохранить кнопку «Назад» для различных изменений состояния на странице, объедините их с # ахорами, чтобы изменить URL-адрес (не заставляя браузер выдавать еще один GET).

Например, Gmail выглядит так:

mail.google.com/#inbox/message-1234

все, что было после символа #, было изменением состояния страницы, которое произошло через ajax. Если я нажму "Назад", я снова вернусь во входящие (опять же, без другого браузера GET)

Есть множество способов решить эту проблему с использованием забавных техник Javascript, часто с использованием iframe, но я думаю, что в этой ситуации вам нужно спросить, почему вы используете AJAX. Собирается ли это сделать сайт более простым в использовании для пользователя? Мне кажется, вы используете его, потому что считаете его крутым (что само по себе не всегда плохо), а не потому, что оно действительно принесет пользу вашим посетителям. На любом обычном веб-сайте обычные документы с гиперссылками почти всегда подходят для основной навигации. Это то, чего ожидают люди, и я бы не рекомендовал вам обходить эти ожидания, основываясь на каких-то модных технологиях.

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

Молодец, что разобрались с этой проблемой, есть много сайтов, которые просто используют AJAX и даже не думают об этом!

На данный момент сайт уже использует AJAX. Это браузерная игра, и статистика каждого обновляется на сервере каждые 15 минут, поэтому в зависимости от того, на какой странице они находятся, я использую AJAX в новой информации, чтобы страница уже была точной.

Nicholas Flynt 02.10.2008 21:54

Итак, вы уже используете его там, где это имеет смысл, я не думаю, что расширение таким образом также имеет смысл.

roryf 02.10.2008 22:14

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

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

Я бы предпочел простые гиперссылки. Мебель для вашей страницы не должна составлять большую часть HTML, так что исключение ее из запросов страниц не является большим преимуществом. Обеспечение адресуемости каждого ресурса (т. Е. URL-адреса для каждого бита контента, который может быть интересен пользователю) является ключевой особенностью дизайна сети. Это означает, что кеширование может работать, а пользователи могут делиться закладками. Это заставляет работать Google, а также сайты социальных закладок.

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

Ответ принят как подходящий

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

Когда вы перекладываете всю свою функциональность на вызовы и обратные вызовы AJAX, вы в основном вынуждаете своих пользователей использовать единый путь для доступа к нужным функциям и контенту, что полностью противоречит тому, как должен функционировать Интернет. Люди полагаются на адресную строку и кнопку «Назад». Если вы переопределите все свои ссылки, так что ваш сайт, по сути, представляет собой одну страницу, которая обновляется только через AJAX, вы ограничиваете возможность пользователей перемещаться по вашему сайту и находить то, что им нужно. Это также мешает вашим пользователям делиться тем, что они находят (что, собственно, и есть часть дела, верно?).

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

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

AJAX в порядке. Но искусство этого состоит в том, чтобы знать, когда его использовать, а когда нет. Если вы будете придерживаться модели, которую я набросал выше, ваши пользователи это оценят.

+1 Не используйте AJAX для превращения всего вашего сайта во Flash-сайт. Синдром второй системы в лучшем виде.

Soviut 21.12.2009 09:02

@Soviut, не могли бы вы рассмотреть и другие (полу) приложения AJAX, такие как Gmail или Google MAps, вторыми системами?

Mansiemans 17.11.2011 14:23

@Mansiemans, нет, потому что они соблюдают систему URL-адресов, поэтому вы можете добавлять в закладки различные части приложения и использовать кнопку возврата.

Soviut 21.11.2011 02:34

Я не согласен. Очевидно, что у людей разные мнения по этому поводу, но я по-прежнему считаю, что фундаментальная архитектура Интернета должна соблюдаться при создании веб-сайта (или «приложения»). Для меня это вопрос хорошей инженерной практики, и это достаточно веская причина. И кроме того, если вы все сделаете правильно, нет причин, по которым вы не можете пользоваться всеми преимуществами AJAX, но при этом уважать структуру URL-адреса.

Matt Howell 04.05.2012 01:27

Сайты, на которых есть страницы для навигации с четко определенными URL-адресами, как правило, имеют гораздо лучшую SOA (если это имеет значение для вашего сайта).

seand 12.07.2014 22:04

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

Tim Hallman 11.04.2016 09:03

Проверьте действительно простая история. Вики не обновлялась 10 месяцев, но я как раз был на Ajax Experience 2008 и увидел на ней презентация Брайана Дилларда. Он говорит, что код 0.8 находится на его жестком диске. Надеюсь, его скоро можно будет скачать.

Другое решение:

Пагинация AJAX и кнопка "Назад"

Кажется, это лучший вариант, работает с JQuery и Mootools.

Попробуйте эту простую и легкую библиотеку PathJS. Это позволяет напрямую привязать слушателей к якорям.

Пример:

Path.map("#/page").to(function(){
    alert('page!');
});

Другие вопросы по теме