Как заменить часть URL с помощью JavaScript?

У меня есть что-то вроде http://domain.com/Pages/SearchResults.aspx?function=search&selectedserver=intranet&search_query=MyRecords и нужно заменить его на JavaScript чем-то похожим на http://domain.com/Pages/SearchResults.aspx?function=loginsearch&user=admin&password=admin&selectedserver=intranet&search_query=MyRecords - так

function=search 

заменяется на

function=loginsearch&user=admin&password=admin

внутри URL. Нужна помощь с тем, какой JavaScript я должен сохранить как кнопку на панели инструментов браузера, чтобы щелкнуть и изменить URL-адрес в адресной строке.

Ответ 1

var url = window.location.toString();
window.location = url.replace(/function=search/, 'function=loginsearch&user=admin&password=admin');

Ответ 2

Если вы хотите сделать это без обновления страницы, я боюсь, что это невозможно. Вы можете изменить только хеш-тег с помощью Javascript, т.е. http://example.com/page/#hashtag, что вы можете сделать с помощью window.location.hash.

UPDATE (11 сентября 2011): Смотрите HTML5 History API DEMO и документы.

Ответ 3

 location.href = location.href.replace(
    'function=search&', 'function=loginsearch&user=admin&password=admin&')

Ответ 4

Единственный способ обновить отображаемый URL без перезагрузки страницы - history.pushState

window.history.pushState("", "", "/your-new-url");

Ответ 5

Вы можете найти выделенную библиотеку URI.js, в частности setQuery() и методы addQuery(). Я вставил этот кусок кода прямо в консоль на этой странице и, похоже, работает:

var url = 'http://domain.com/Pages/SearchResults.aspx?function=search&selectedserver=intranet&search_query=MyRecords';
var uri = new URI(url);
var new_params = {'function': 'loginsearch', 'user': 'admin', 'password': 'admin'};
uri.setSearch(new_params);
console.log(uri.toString());

http://domain.com/Pages/SearchResults.aspx?function=loginsearch&selectedserver=intranet&search_query=MyRecords&user=admin&password=admin
<- undefined
>

Легко превратить эту логику в функцию (или однострочный:)). Как в стороне, почему вы передаете учетные данные прямо в URL?

Ответ 6

var url             = window.location.href;               
window.location     = url.replace(/function=search/, 'function=loginsearch&user=admin&password=admin');