2011-01-12 145 views
9

我有类似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东西来取代它 - 这样如何用JavaScript替换部分URL?

function=search 

正在替换

function=loginsearch&user=admin&password=admin 

的URL里面。需要帮助我将JavaScript保存为浏览器工具栏上的一个按钮,以便点击并更换地址栏中的网址。

+0

这是一个错误,已固定 – user63503 2011-01-12 02:02:45

+19

请告诉我,你是不是发送明文用户名和密码。 – 2011-01-12 02:02:47

回答

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

如果你想这样做而无需刷新页面,恐怕是不可能的。您只能通过Javascript更改散列标记,即http://example.com/page/#hashtag,您可以通过window.location.hash来完成。

UPDATE(2011年9月11日):查看HTML5 history API

0

您可能会发现专用库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中传递凭证?

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

无需重新加载页面更新显示的URL的唯一方法是history.pushState

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