Создайте слово-тег javascript для не-JavaScript - PullRequest
1 голос
/ 15 сентября 2011

Используя следующий учебник, я хочу, чтобы мой сайт использовал AJAX для загрузки контента (но также хотел иметь возможность использовать кнопку "Назад" и т. Д.): http://www.queness.com/post/328/a-simple-ajax-driven-website-with-jqueryphp

Конечно, если у кого-то отключен JavaScript, веб-сайт также должен работать (без Ajax).

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

Ответы [ 3 ]

2 голосов
/ 15 сентября 2011

HTML5 дает нам методы для изменения URL без обновления страницы https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#Adding_and_modifying_history_entries

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

https://github.com/browserstate/history.js - это отличный маленький pollyfill, который будет использовать материал истории HTML5, если браузер его поддерживает, в противном случае (Internet Explorer) он изменяет хэш URL-адреса.

1 голос
/ 15 сентября 2011

В основном, три шага:

  • кодируйте ваши "a" теги просто нормально: <a href='about'>About us</a>
  • в вашем коде JavaScript, перехватите все click события в тегах <a> и перейдите к # + this.href. Поэтому, когда они нажимают на указанный выше URL, вы переходите на site.com/#about вместо site.com/about
  • в вашем коде javascript, есть функция таймера, которая считывает хеш-значение из текущего местоположения и загружает соответствующий URL (с удаленным #) через ajax

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

В ответ на комментарии могу предложить следующее:

  • перенаправить вашу домашнюю страницу с помощью javascript с site.com на site.com/js/
  • при нажатии <a href='about'> перейдите к site.com/js/#about
  • на странице "js", есть что-то вроде <a id=about href="/about">click here</a> для не-js пользователей
0 голосов
/ 15 сентября 2011

Почему бы просто не создать приложение в обычном режиме, а затем добавить AJAX сверху, а не наоборот, и заставить себя больше работать?

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

...