Internet Explorer помещает хэши в href с помощью jQuery Address

Я ищу хороший плагин jquery pushstate для работы с ajax-json (и php's mod_rewrite, когда js выключен) и нашел адрес jQuery. Мне это очень нравится, поскольку он хорошо документирован и с ним легко работать. (Я никогда не понимал history.js) Однако я заметил, что великий интернет-исследователь (9) помещает туда хэши в поле href. Это делается и в примере: http://www.asual.com/jquery/address/samples/state/contact Я протестировал другие браузеры, но вы можете увидеть это только с отличным интернет-обозревателем. Есть ли способ обойти это?

1 ответ

Internet Explorer 9 не поддерживает API истории. Вместо этого приложения, использующие эти API, должны использовать onhashchange функциональность, которая использует фрагмент местоположения для репликации аналогичной функциональности в менее функциональных браузерах.

То, что вы видите, ожидается; Internet Explorer 10+ поддерживает эти новые функции и, следовательно, не требует добавления /# на URL, чтобы записать и сохранить историю государства. Internet Explorer 9 не поддерживает API истории, поэтому необходимо принять соответствующие меры.

Вы упомянули history.js, который расширяет поддержку таких методов, как history.pushState в не HTML5 браузеры. На этой странице проектов GitHub вы можете увидеть несколько примеров того, как URL будут отображаться в более новых браузерах, по сравнению с тем, как они будут выглядеть в более старых браузерах. Как и ожидалось, шаблон, который вы испытываете сейчас, также создается там.

Хотя при просмотре в Internet Explorer 9 в вашем URL-адресе есть фрагмент, имейте в виду, что он не отражает запрошенный путь на вашем сервере. Запишите запрошенный адрес, введенный в браузере, и фактический запрос на вкладке "Сеть" к серверу:

Решение 404

Причина, по которой вы получили 404 в IE9, заключается в том, что в браузерах, которые не поддерживают API истории HTML5, jQuery.address будет перемещаться в любое состояние, которое вы указали в настройке. Таким образом, существует начальный запрос, который передается на ваш сервер при вводе URL-адреса. Этот адрес обрабатывается mod_rewrite и ваш RewriteRules определить начальный контент для загрузки.

Когда ваш исходный контент загружен, и jQuery.address настроен, новая навигация даже происходит на вашем пути установки. В вашем случае это было /posters, К сожалению, у вас не было RewriteRules на месте, чтобы предоставить контент /posters конечный результат был 404. Опять же, это произошло только в IE9, поскольку IE9 не поддерживает интерфейс History.

Это можно подтвердить, снова посетив вкладку "Сеть" в F12 Developer Tools и захватив данные. Открыв эту вкладку, нажмите "Начать захват", а затем введите полный путь к продукту в вашей корзине. Вы заметите первоначальный запрос к этому полному пути с последующей загрузкой нескольких зависимостей. Вскоре после этого вы увидите, что по любому пути, указанному вами в $.address.state,

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