Я запускаю браузерную игру на сайте www.darknovagames.com. Недавно я работал над переформатированием сайта с помощью CSS, пытаясь проверить все его страницы в соответствии со стандартом HTML.
Я раздумывал над этой идеей, чтобы меню навигации было расположено слева на AJAX страницах (вместо того, чтобы каждый раз переводить пользователя на отдельную страницу, требуя перезагрузки заголовка и панели навигации, которые почти никогда не меняются), и я знайте, что если я это сделаю, я, вероятно, сломаю кнопки Вперед / Назад в браузере. Мой вопрос, как я предполагаю, заключается в том, следует ли мне продолжить и использовать AJAX для сайта, тем самым требуя от пользователя использовать навигацию по сайту для игры, или я должен оставить сайт в его нынешнем виде и использовать стандартные гиперссылки и другие вещи для навигации?
Причина, по которой я спрашиваю, я полагаю, заключается в том, что я встроил систему форумов в сайт, и много раз я хотел бы связать, скажем, с определенной темой на форумах.
Я также открыт для предложений. Есть ли стандартный (желательно без традиционных фреймов) способ перезагрузки только основной области сайта, при этом изменяя URL-адрес, чтобы пользователи могли делать закладки, пересылать / назад и т. д.? Это потенциально могло бы решить мою проблему. Я просто прошу здесь лучшее решение, а не ответ на конкретный вопрос. ^ _ ^
Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте ajax для частей страницы, которые необходимо обновить, а не для всей страницы. Для этого вам следует использовать шаблоны.
Если вы хотите сохранить кнопку «Назад» для различных изменений состояния на странице, объедините их с # ахорами, чтобы изменить URL-адрес (не заставляя браузер выдавать еще один GET).
Например, Gmail выглядит так:
mail.google.com/#inbox/message-1234
все, что было после символа #, было изменением состояния страницы, которое произошло через ajax. Если я нажму "Назад", я снова вернусь во входящие (опять же, без другого браузера GET)
Есть множество способов решить эту проблему с использованием забавных техник Javascript, часто с использованием iframe, но я думаю, что в этой ситуации вам нужно спросить, почему вы используете AJAX. Собирается ли это сделать сайт более простым в использовании для пользователя? Мне кажется, вы используете его, потому что считаете его крутым (что само по себе не всегда плохо), а не потому, что оно действительно принесет пользу вашим посетителям. На любом обычном веб-сайте обычные документы с гиперссылками почти всегда подходят для основной навигации. Это то, чего ожидают люди, и я бы не рекомендовал вам обходить эти ожидания, основываясь на каких-то модных технологиях.
AJAX великолепен и позволяет делать много замечательных вещей, изменение навигации по веб-сайтам не входит в их число.
Молодец, что разобрались с этой проблемой, есть много сайтов, которые просто используют AJAX и даже не думают об этом!
Итак, вы уже используете его там, где это имеет смысл, я не думаю, что расширение таким образом также имеет смысл.
AJAX - не лучшее решение для навигации именно по той причине, которую вы описываете. Попытка перезагрузить заголовок и панель навигации минимальна по сравнению с трудностями, связанными с нарушением пользовательского интерфейса навигации браузера.
Более подходящим примером AJAX было бы предоставление пользователям возможности играть в игру в главном окне, в то время как они могут просматривать список другого содержимого на панели навигации. Вы можете загружать дополнительные элементы в панель навигации через AJAX, не нарушая игровой процесс.
Я бы предпочел простые гиперссылки. Мебель для вашей страницы не должна составлять большую часть HTML, так что исключение ее из запросов страниц не является большим преимуществом. Обеспечение адресуемости каждого ресурса (т. Е. URL-адреса для каждого бита контента, который может быть интересен пользователю) является ключевой особенностью дизайна сети. Это означает, что кеширование может работать, а пользователи могут делиться закладками. Это заставляет работать Google, а также сайты социальных закладок.
На мой взгляд, сокращение нескольких байтов HTML для последующих изменений страницы не стоит усилий.
Если вы собираетесь включить AJAX, не делайте этого за счет наличия доступных URL-адресов для каждой важной страницы вашего сайта. Это основа сайта с возможностью навигации, которым могут пользоваться люди.
Когда вы перекладываете всю свою функциональность на вызовы и обратные вызовы AJAX, вы в основном вынуждаете своих пользователей использовать единый путь для доступа к нужным функциям и контенту, что полностью противоречит тому, как должен функционировать Интернет. Люди полагаются на адресную строку и кнопку «Назад». Если вы переопределите все свои ссылки, так что ваш сайт, по сути, представляет собой одну страницу, которая обновляется только через AJAX, вы ограничиваете возможность пользователей перемещаться по вашему сайту и находить то, что им нужно. Это также мешает вашим пользователям делиться тем, что они находят (что, собственно, и есть часть дела, верно?).
Подумайте о ментальной карте вашего сайта пользователем. Если они знают, что вошли через домашнюю страницу, затем они отправлялись искать что-то, затем попадали на страницу игр, затем они начинали играть в определенную игру, то есть четыре различных единицы действия, которые выполнял пользователь. Они могли бы проделать еще несколько меньших, более незначительных действий на каждой из этих страниц, но это основные элементы. Когда они нажимают кнопку «Назад», они должны ожидать, что вернутся назад по пути, по которому пришли. Если вы загружаете все эти страницы с помощью вызовов AJAX, вы предоставляете сайт, функциональность которого противоречит ожиданиям пользователя.
Разбейте свой сайт на все важные функции (например, поиск, главная страница, профили, игры - это будет зависеть от того, о чем ваш сайт). Везде, где вы ссылаетесь на эти страницы, делайте это с помощью обычной ссылки и статического URL-адреса.
AJAX в порядке. Но искусство этого состоит в том, чтобы знать, когда его использовать, а когда нет. Если вы будете придерживаться модели, которую я набросал выше, ваши пользователи это оценят.
+1 Не используйте AJAX для превращения всего вашего сайта во Flash-сайт. Синдром второй системы в лучшем виде.
@Soviut, не могли бы вы рассмотреть и другие (полу) приложения AJAX, такие как Gmail или Google MAps, вторыми системами?
@Mansiemans, нет, потому что они соблюдают систему URL-адресов, поэтому вы можете добавлять в закладки различные части приложения и использовать кнопку возврата.
Я не согласен. Очевидно, что у людей разные мнения по этому поводу, но я по-прежнему считаю, что фундаментальная архитектура Интернета должна соблюдаться при создании веб-сайта (или «приложения»). Для меня это вопрос хорошей инженерной практики, и это достаточно веская причина. И кроме того, если вы все сделаете правильно, нет причин, по которым вы не можете пользоваться всеми преимуществами AJAX, но при этом уважать структуру URL-адреса.
Сайты, на которых есть страницы для навигации с четко определенными URL-адресами, как правило, имеют гораздо лучшую SOA (если это имеет значение для вашего сайта).
Это сильно устарело, так как новые интерфейсы на основе ajax содержат полную перезагрузку http с точки зрения скорости, а в частных веб-пространствах SEO не имеет значения.
Проверьте действительно простая история. Вики не обновлялась 10 месяцев, но я как раз был на Ajax Experience 2008 и увидел на ней презентация Брайана Дилларда. Он говорит, что код 0.8 находится на его жестком диске. Надеюсь, его скоро можно будет скачать.
Другое решение:
Пагинация AJAX и кнопка "Назад"
Кажется, это лучший вариант, работает с JQuery и Mootools.
Попробуйте эту простую и легкую библиотеку PathJS. Это позволяет напрямую привязать слушателей к якорям.
Пример:
Path.map("#/page").to(function(){
alert('page!');
});
На данный момент сайт уже использует AJAX. Это браузерная игра, и статистика каждого обновляется на сервере каждые 15 минут, поэтому в зависимости от того, на какой странице они находятся, я использую AJAX в новой информации, чтобы страница уже была точной.