繁体   English   中英

如何用 JavaScript 替换部分 URL?

[英]how to replace part of the URL with JavaScript?

我有类似http://domain.com/Pages/SearchResults.aspx?function=search&selectedserver=intranet&search_query=MyRecords的东西,需要用类似于http://domain.com/Pages/SearchResults.aspx 的 JavaScript 替换它? function=loginsearch&user=admin&password=admin&selectedserver=intranet&search_query=MyRecords — 所以

function=search 

正在被替换为

function=loginsearch&user=admin&password=admin

网址里面。 需要帮助我应该将哪些 JavaScript 保存为浏览器工具栏上的按钮以单击并替换地址栏中的 URL。

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

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

window.history.pushState('', '', '/your-new-url');
 location.href = location.href.replace(
    'function=search&', 'function=loginsearch&user=admin&password=admin&')

如果您想在不刷新页面的情况下执行此操作,恐怕这是不可能的。 您只能通过 Javascript 更改哈希标签,即http://example.com/page/#hashtag ,您可以通过window.location.hash更改。

更新(2011 年 9 月 11 日):请参阅 HTML5 历史 API演示文档

我的版本。 对我来说很好。

let url = window.location.toString();
window.history.pushState('', '', url.replace(searching_string, new_string));

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM