如何使用JavaScript替换URL的一部分?

21

我有一个类似于 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。


那是一个错误,已经修复。 - user63503
30
请问您是否正在发送明文的用户名和密码? - Cameron Skinner
6个回答

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

1
添加了一个按钮,使用以下代码: javascript:var url = window.location.toString();window.location = url.replace(/function=search/, 'function=loginsearch&user=admin&password=admin'); 它起作用了!非常感谢! - user63503
@Juan:这取决于它是否在“onclick”属性中。 - Matt Ball
没有理由将其作为href="javascript: {...}"运行。 - Ruan Mendes
在URL中更改内容只能通过JS实现吗?实际上,我正在尝试将URL中的所有空格替换为“+”。我该怎么做? - Shafizadeh
@MattBall 为什么?为什么我想要用+替换空格或者为什么我想要用其他方式(不是JS)来做这件事? - Shafizadeh
你为什么想要用“+”代替空格? - Matt Ball

11

要在不重新加载页面的情况下更新显示的URL,唯一的方法是使用history.pushState

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

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

1
我的版本。对我来说很好用。
let url = window.location.toString();
window.history.pushState('', '', url.replace(searching_string, new_string));

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');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接