Каким должен быть новый контент URL при использовании Javascript History API?
Я использую AJAX для динамической загрузки контента на своей странице. (в основном у меня есть панель поиска, и результаты поиска получены с использованием AJAX). Я хочу использовать History API, поскольку после нескольких поисков (а также применения сортировки и фильтрации), если пользователь нажимает кнопку "Назад" в браузере, он удаляет их непосредственно с моего сайта, а не возвращает их к предыдущему результату поиска. Существует несколько интернет-ресурсов об использовании History API, но я мог найти любую информацию относительно URL, которую нужно установить с помощью
window.history.pushState(dataObj, title, URL);
Если мы просто зададим какой-либо URL, например, www.mypage.com/value1, то это будет поддельный URL, который, если он будет добавлен в закладки и будет использован позже, не будет работать.
Поэтому я подумал об использовании следующего подхода.
1) Установите URL-адрес www.mypage.com?variable1=value1&variable2=value2 ..... Где value1 и value2... будут некоторые данные, которые я использую для AJAX.(В моем случае эти значения будут поиск текст и фильтр и сортировать информацию)
2) При нажатии кнопки "Назад", получить URL, плюнуть на него, используя "?" и разделители "&", и принять соответствующие меры
3) Если этот URL также помечен закладкой, я могу обработать его соответствующим образом, поскольку вся информация доступна в виде переменных.
Итак, мой вопрос: это правильный подход или есть какой-то лучший (стандартный) способ обработки такого сценария?
1 ответ
Это несколько самоуверенно, но я думаю, что ваш подход звучит хорошо. Пока пользователь может нажимать кнопку "Назад" и напрямую посещать URL-адрес, чтобы получить те же результаты, я думаю, что это идеальный способ сделать это, и я не всегда могу придумать лучший способ.
На самом деле, из того, что я мог понять после просмотра JavaScript-кода поиска Google, похоже, что они используют очень похожий метод. Они используют history.pushState(...)
чтобы добавить URL поисковых запросов в историю браузера, и когда они инициализируют окно, они проверяют объект истории, а также URL, чтобы решить, какие результаты поиска загрузить с использованием JS. Это не означает, что Google - главный гуру для правильной веб-разработки, но если они используют такой метод, я думаю, что можно с уверенностью сказать, что вы бы тоже могли его использовать.
Я определенно был бы заинтересован, если бы у кого-то был лучший способ, потому что он кажется лучшим.