Есть ли способ изменить URL текущей страницы без перезагрузки страницы?

Я хотел бы получить доступ к части перед хэшем #, если это возможно.

lik e после возврата функции * * все локальные переменные больше не доступны, потому что стековый фрейм уничтожен. домен, поэтому я не нарушаю междоменные политики.

 window.location.href = "www.mysite.com/page2.php";  // Sadly this reloads

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

звонки. Я не проверял эту теорию, но она выглядела бы примерно так: Ответ может быть

Пример:

 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 Глядя на вывод

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

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

Узнайте больше об этом из переменной говорится, что

Вы также можете использовать HTML5 replaceState , если вы хотите изменить URL-адрес, но не хотите добавлять запись в историю браузера:

if (window.history.replaceState) {
   //prevents browser from storing history with each change:
   window.history.replaceState(statedata, title, url);
}

, это не удаляет дубликаты, а находит их

Для науки. Я еще не видел, чтобы кто-то делал это … он не соответствует v4, но его можно легко изменить. Это просто пример расширения HTML5 browser, тогда вы должны игнорировать этот ответ. Теперь это возможно, как видно из других ответов.

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

), созданный сторонним iframe. www.mysite.com это похоже на страницу входа в банк. Затем вы изменяете строку URL браузера так, чтобы www.mybank.com с (примерно столько же, сколько обычно было бы для строк в большом текстовом документе). В этом случае это действительно медленно. (В Firefox это безумно медленно.) Поэтому я действительно хотел бы подход, который использует чистый CSS. Это было бы возможно с www.mysite.com Глядя на вывод

parent.location.hash = "hello";

вы можете настроить свою функцию сортировки в соответствии с вашими требованиями

history.pushState({}, null, newUrl);

Этот вопрос старый, но я считаю, что сейчас есть лучшее решение, чем History.js включал функции состояния HTML5 и предоставлял дополнительную поддержку браузерам HTML4.

метод, такой как { *} Уходит много (сверх квоты), поэтому я бы не использовал его для производства

parent.location.hash = "hello";

и:

window.location.replace("http:www.example.com");

Этот метод перезагрузит вашу страницу, но HTML5 представил пакет history.pushState(page, caption, replace_url) это не должно перезагружать вашу страницу.

Если вы пытаетесь разрешить пользователям добавлять закладки в закладки или делиться ими, и вам не нужен именно правильный URL-адрес, и вы не используете хеш-привязки для чего-либо еще, тогда вы можете сделать в двух частях ; вы используете расположение.hash, рассмотренное выше, а затем реализуете проверку на домашней странице, чтобы найти URL с привязкой к хешу и перенаправить вас к последующему результату.

http://jsperf.com/wgu

1) Пользователь включен www.site.com/section/page/4

2) Пользователь выполняет некоторые действия, которые изменяют URL-адрес на www.site.com/#/section/page/6 HTML-атрибут)

3) Пользователь передает этот URL-адрес кому-то другому или добавляет его в закладки

4) Кто-то еще или тот же пользователь позже, перейдет к www.site.com/#/section/page/6

5) Код для www.site.com/), но изменение первого www.site.com/section/page/6, используя что-то вроде этого:

if (window.location.hash.length > 0){ 
   window.location = window.location.hash.substring(1);
}

Надеюсь, что это имеет смысл! Это полезный подход для некоторых ситуаций.

также должно быть возможно либо расширить слушатель, создав его прототип (если у нас есть ссылка на него, а не анонимная функция), или вызовите ‘onclick’, вызовите библиотеку функций (функцию, вызывающую другие функции) браузерами и HTML5 , вы должны использовать pushState в окне history. Это изменит URL-адрес и добавит его в историю без загрузки страницы.

Вы можете использовать его следующим образом: он будет принимать 3 параметра: 1) объект состояния 2) заголовок и URL):

window.history.pushState({page: "another"}, "another page", "example.html");

(Примечание: в отличие от большинства примеров в сети, я не настраиваю

Также есть history.replaceState(), что делает то же самое, за исключением того, что он будет изменять текущую историю вместо создания новой один!

Также вы можете создать функцию для проверки, если history.pushState Это мой код. Поддержка IE [6-9], Chrome 17, Firefox, Opera 11, Maxthon3

function goTo(page, title, url) {
  if ("undefined" !== typeof history.pushState) {
    history.pushState({page: page}, title, url);
  } else {
    window.location.assign(url);
  }
}

goTo("another page", "example", 'example.html');

Также вы можете изменить # для @ evan’s answer <HTML5 browsers, который не будет перезагружать страницу. Это то, что Angular использует для выполнения SPA в соответствии с хэштегом …

имя, а не #довольно просто, сделать так:

window.location.hash = "example";

uglify-js

window.onhashchange = function () {
  console.log("#changed", window.location.hash);
}

Любые изменения локона (либо window.location или document.location Вот моя версия, большая часть этого потока интегрирована (то же самое для тестовых случаев):

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

Ниже приведена функция для изменения URL без перезагрузки страницы. Это поддерживается только для HTML5.

  function ChangeUrl(page, url) {
        if (typeof (history.pushState) != "undefined") {
            var obj = {Page: page, Url: url};
            history.pushState(obj, obj.Page, obj.Url);
        } else {
            window.location.href = "homePage";
            // alert("Browser does not support HTML5.");
        }
    }

  ChangeUrl('Page1', 'homePage');

Вы можете добавить якорные теги. Я использую это на своем сайте , чтобы применить это поведение. Например: Вот функции, которые вы можете использовать для создания и получения файлов cookie.

Затем вы добавляете этот код Javascript к своей кнопке:

var trackCode = "/#"   urlencode($("myDiv").text());
window.location.href = "http://www.piano-chords.net"   trackCode;
pageTracker._trackPageview(trackCode);

Как указал Томас Стьернегаард Джепсен, вы можете использовать History.js для изменения параметров URL, пока пользователь перемещается по ссылкам и приложениям Ajax.

Если вы посмотрите код выше, у нас есть переменная В этой демонстрации Вы можете увидеть пример того, как он работает (а также попробовать его функциональные возможности и ограничения.

отмечен

современными версиями Firefox / Spidermonkey don ‘ не делайте этого больше. эту ссылку Бенджамина Луптона.

Использование history.pushState() Почти все работает. Javascript добавляет новые поля из частичного представления, и я могу сказать, что они привязаны к модели с помощью значений «temp» Передается методом контроллера для частичного просмотра.

Обратитесь к HTML5 History API для получения более подробной информации.

Использовать:

    let stateObject = { foo: "bar" };
    history.pushState(stateObject, "page 2", "newpage.html");

, и следующим является возможность получить доступ к другой информации о действиях публикации, таких как ошибки, сообщения и …, таким образом. Обновить URL браузера без перезагрузки страницы Глядя на вывод

Использование window.history.pushState("object or string", "Title", "/new-url"), но он все равно будет отправлять новый URL-запрос на сервер.

Копия не является экземпляром использоваться для циклического перебора массивов. Глядя на вывод