Должна ли ссылка переходить на новую страницу или показывать другой div?


Пример в коде:

Нет навигации по страницам:

<body>
   <nav>
      // Navigation links to the parts of the site.
      // Clicking a link calls a javascript function to display the relevant <div>
   </nav>
   <section id="page1">
      // Page 1 content
   </section>
   <section id="page2">
      // Page 2 content
   </section>
</body>

Навигация по страницам:

// Page1.php:
<body>
   <nav>
      // Navigation links to parts of the site.
      // Act as normal <a> tags, redirecting the browser to the new page
   </nav>
   <section>
      // Page1 content
   </section>
</body>

// Page2.php:
<body>
   <nav>
      // Navigation links to parts of the site.
      // Act as normal <a> tags, redirecting the browser to the new page
   </nav>
   <section>
      // Page2 content
   </section>
</body>

Плюсы навигации по ссылкам:

  • Браузеру не нужно загружать весь сайт сразу

  • Для использования сайта не требуется javascript

  • Предоставляет прямые URL-адреса для удобной навигации

  • Похоже, это стандартная вещь, которую нужно сделать

Плюсы для javascript навигация:

  • Для сайтов с тяжелыми серверными сценариями (как у меня) сводит к минимуму запросы страниц

  • Нет необходимости в одном и том же коде в разных местах (например, элемент <nav>). Создание функции echo_nav_html() в PHP не является хорошим решением, так как это делает кодирование в среде IDE раздражающим

  • После начальной загрузки сайт работает сверхбыстро, так как на сервер почти не отправляются новые запросы

О мудрые интернеты, есть какие-нибудь мысли по это?

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

Author: Dori, 2013-02-16

2 answers

Лучшее решение - сделать и то, и другое.

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

Читайте о изящная деградация и прогрессивное улучшение.

Существует множество причин для предоставления кода, отличного от JavaScript. Не все браузеры поддерживают JavaScript. Многие корпоративные сети все еще используют старые версии IE, которые могут вести себя непредсказуемо, или они могут принудительно настроить конфигурацию, которая полностью отключает JS.

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

 2
Author: ghoti, 2013-02-16 19:50:09

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

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

 0
Author: frosty, 2013-02-16 19:38:58