#jquery #javascript
Сайт у меня на аяксе и нужно чтобы при кликании по ссылке сработал аякс (то есть страница не перезагружается, а подгружается), делаю так: location.href=bla-bla; return false; но как я и думал - это не сработало. Какие есть решения? То есть нужно в адрессную строку вставить урл той ссылки, на которую кликается пользователем.
Ответы
Ответ 1
function setLocation(curLoc){ try { history.pushState(null, null, curLoc); return; } catch(e) {} location.hash = '#' + curLoc; }Ответ 2
window.history.pushState("object or string", "Title", "/new-url"); Спецификация HTML5 также определяет другой, более сложный и более надежный способ управления историей посещений, основанный на использовании метода history.pushState() и события popstate. При переходе в новое состояние веб-приложение может вызвать метод history.pushState(), чтобы добавить это состояние в историю посещений. В первом аргументе методу передается объект, содержащий всю информацию, необходимую для восстановления текущего состояния приложения. Для этой цели подойдет любой объект, который можно преобразовать в строку вызовом метода JSON.stringify(), а также некоторые встроенные типы, такие как Date и RegExp. Во втором аргументе передается необязательное заглавие (простая текстовая строка), которую броузер сможет использовать для идентификации сохраненного состояния в истории посещений (например, в меню кнопки Back). В третьем необязательном аргументе передается строка URL, которая будет отображаться как адрес текущего состояния. Относительные URL-адреса интерпретируются относительно текущего адреса документа и нередко определяют лишь часть URL, соответствующую идентификатору фрагмента, такую как #state. Связывание различных состояний приложения с собственными URL-адресами дает пользователю возможность делать закладки на внутренние состояния приложения, и если в строке URL будет указан достаточное количество информации, приложение сможет восстановить это состояние при запуске с помощью закладки. © Дэвид Флэнаган. "JavaScript. Подробное руководство" Именно этим API пользуется, например, Вконтакте - адрес страниц меняется полностью без #. Стоит отметить, что window.history... писать не обязательно, достаточно просто history.... Также надо упомянуть, что данный API работает не во всех браузерах, например, как сказано в аналогичном вопросе на английском SO, в IE9 его нет.Ответ 3
Работает даже в IE8: function setLocation(curLoc){ location.href = curLoc; location.hash = curLoc; } Только функцию я вызываю с хешем: setLocation('#book/' + id);
Комментариев нет:
Отправить комментарий