@FX-Mercury

Как так устроены ссылки на некоторых сайта?

Есть ссылки вида
<a href="/feed"> Новости </a>
Когда по ним кликаешь происходит загрузка контена и адресная строка изменяется на vk.com/feed. Вот как так сделать ? Когда я деляю такую ссылку браузер пытается загрузить файл feed
  • Вопрос задан
  • 348 просмотров
Пригласить эксперта
Ответы на вопрос 4
ArsenBespalov
@ArsenBespalov
Сам себе разработчик
Это динамические страницы. Вам надо для начала приступить к изучению какого-либо языка, тогда станет ясно как делать подобное.

Если вы хотите такое же применять на PHP, то допустим для Apache есть вот такая конфигурация .htaccess

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]


Ну а в index.php вам нужно будет весь остаточный путь парить под свои нужды.

UPD

FX-Mercury: ну допустим если вопрос стоит именно в том, чтобы не перезагружать страницу, то это AJAX технология + работа с историей браузера, тогда вам надо использовать что-то подобное:

Работает в браузерах Chrome, Safari, FF4+ и IE10pp4+!

Пример:
function processAjaxData(response, urlPath){
     document.getElementById("content").innerHTML = response.html;
     document.title = response.pageTitle;
     window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", urlPath);
 }


Также можешь использовать windows.onpopstate для определения нажатия кнопок навигации браузера назад/вперед:

window.onpopstate = function(e){
    if(e.state){
        document.getElementById("content").innerHTML = e.state.html;
        document.title = e.state.pageTitle;
    }
};


Для более глубокого изучения манипуляции с историей браузера читай MDN, там все расписано.

Кстати, если надо что-то подобное использовать на IE7, то рекомендую смотреть в сторону history.js.

Для тех, кто задается вопросом что такое IE10pp4+ — это Internet Explorer 10 версии и старше на Windows 8 Platform Preview 4 версии и старше
Ответ написан
sanchezzzhak
@sanchezzzhak
Ля ля ля...
historyApi + ajax = pjax
Ответ написан
Комментировать
DIITHiTech
@DIITHiTech
Fullstack javascript developer
То веб приложение и всю загрузку и построение страницы там делают скрипты на клиенте.
Чтоб менять адрес в строке браузера без перехода - нужна поддержка History API
habrahabr.ru/post/123106
<a href="/feed" data-virtual>Feed</a>
        <a href="/news" data-virtual>News</a>
        <a href="/users" data-virtual>Users</a>
        <a href="/users">Real link</a>


document.body.addEventListener("click",function(evt){
                var target=evt.target;
                if(target.tagName=="A"){
                    if(target.hasAttribute("data-virtual")){
                        window.history.pushState({},target.textContent,target.href);
                        evt.preventDefault();
                        alert("Идем на "+target.href);
                    }
                }
            })

            window.addEventListener("popstate",function(evt){
                alert("Назад на "+window.location.href);
            })


Теперь если у ссылки есть атрибут data-virtual - то она виртуальная - перехода при клике на нее не будет.
Ответ написан
Комментировать
Antiless
@Antiless
Адрес ссылки может быть как абсолютным, так и относительным. Абсолютные адреса должны начинаться с указания протокола (обычно http://) и содержать имя сайта. Относительные ссылки ведут отсчет от корня сайта или текущего документа.
источник
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы