HTML5 History API и закладки - PullRequest
       0

HTML5 History API и закладки

4 голосов
/ 19 августа 2011

Какой смысл использовать History History, если создаваемые им URL-адреса не являются "настоящими"?Конечно, я могу нажимать столько, сколько захочу, но если я не могу включить один из этих URL-адресов в качестве закладки, какой смысл?Мой реальный вопрос - как настроить веб-сервер таким образом, чтобы независимо от введенного адреса он загружал только одно веб-приложение (оставив адрес без изменений, чтобы я мог затем ссылаться на него с помощью JavaScript для загрузки соответствующего содержимого)?1001 *

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

Ответы [ 4 ]

2 голосов
/ 19 августа 2011

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

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

На стороне клиента, однако, у вас должен быть JavaScript, который анализирует URL, а затем отвечает соответствующим образом. Лично я нахожу плагин jQuery Address очень хорошим для этого.

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

<script type="text/javascript" src="jquery.address-1.3.min.js?state=/absolute/path/to/your/application"></script>

Тогда вам нужно будет jQuery.address проанализировать URL, когда страница загрузится и DOM будет готов:

// Handle the initial load and make the page look the way it's supposed to
$.address.init(function(e) {
    // Address and path details can be found in the event object.
    // Explore it a bit via console.log()
    console.log(e);
});

Для хорошего рабочего примера я рекомендую просмотреть источник этого jQuery.address примера , а также jQuery.address документов .

1 голос
/ 19 августа 2011

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

1 голос
/ 19 августа 2011

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

0 голосов
/ 19 января 2014

Если вы не используете инфраструктуру MVC, вы можете использовать .htaccess, чтобы обработать это как @ nwellcome упомянутое:

# html5 pushstate (history) support:
<ifModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !index
    RewriteRule (.*) index.html [L]
</ifModule>

источник: HTML5 История / URL-адреса pushState, .htaccess и Вы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...