Как изменить URL-адрес без перезагрузки страницы?

Вы должны установить семя каждый раз, когда хотите получить воспроизводимый случайный результат.

set.seed(1)
rnorm(4)
set.seed(1)
rnorm(4)
2137
задан Peter Mortensen 17 March 2019 в 09:05
поделиться

7 ответов

Теперь это можно сделать в Chrome, Safari, Firefox 4+ и Internet Explorer 10pp4+!

Дополнительную информацию см. в ответе на этот вопрос: Обновление адресной строки новым URL без хэша или перезагрузки страницы

Пример:

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

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

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

Для более детального рассмотрения манипуляций с историей браузера смотрите эту статью MDN.

1915
ответ дан 22 November 2019 в 19:55
поделиться

Предполагая, что вы не пытаетесь сделать что-то вредоносное, все, что вы хотели бы сделать со своими собственными URL-адресами, может быть волшебным образом реализовано с htaccess .

-12
ответ дан 22 November 2019 в 19:55
поделиться

Любые изменения локона (либо window.location , либо document.location ) вызовут запрос на этот новый URL, если вы не просто изменение фрагмента URL. Если вы измените URL, вы измените URL.

Используйте методы перезаписи URL на стороне сервера, такие как mod_rewrite Apache , если вам не нравятся URL, которые вы используете в настоящее время.

12
ответ дан 22 November 2019 в 19:55
поделиться

ПРИМЕЧАНИЕ. Если вы работаете с браузером HTML5, этот ответ следует игнорировать. Теперь это возможно, как видно из других ответов.

Невозможно изменить URL-адрес в браузере без перезагрузки страницы. URL-адрес представляет собой последнюю загруженную страницу. Если вы измените его ( document.location ), то он перезагрузит страницу.

Одной из очевидных причин является то, что вы пишете сайт на www.mysite.com , который выглядит как страница входа в банк. Затем вы изменяете строку URL браузера на: www.mybank.com . Пользователь будет совершенно не в курсе, что он действительно просматривает www.mysite.com .

103
ответ дан 22 November 2019 в 19:55
поделиться
parent.location.hash = "hello";
81
ответ дан 22 November 2019 в 19:55
поделиться

Вы можете добавлять теги привязки. Я использую его на своем сайте http://www.piano-chords.net/ , чтобы я мог отслеживать с помощью Google Analytics, что люди посещают на странице.

Я просто добавляю тег привязки и затем часть страницы, которую я хочу отслеживать:

var trackCode = "/#" + urlencode($("myDiv").text());
window.location.href = "http://www.piano-chords.net" + trackCode;
pageTracker._trackPageview(trackCode);
12
ответ дан 22 November 2019 в 19:55
поделиться

HTML5 представил методы history.pushState () и history.replaceState () , которые позволяют добавлять и изменять записи истории соответственно.

window.history.pushState('page2', 'Title', '/page2.php');

Подробнее об этом читайте в здесь

523
ответ дан 22 November 2019 в 19:55
поделиться
Другие вопросы по тегам:

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