在保持查询字符串不变的同时更改链接URL中的路径名

时间:2013-12-18 16:57:31

标签: javascript html url query-string href

在包含以下网址http://example.com/foo.html?query=1&other=2的网页中,我想创建指向http://example.com/bar.html?query=1&other=2的链接。如何在不明确保存和重新加载所有查询字符串的情况下执行此操作。

我需要将其从页面的iframe版本(embed.html?query)轻松链接到整页(index.html?query)。

3 个答案:

答案 0 :(得分:0)

它可能很挑剔,但您可以在'?'上拆分URI然后循环遍历该数组的第二个元素以获取键/值对,如果您需要评估每对(使用'&'作为分隔符)。显而易见的弱点是,如果有额外的'?'或'&'在URI中使用。

这样的事可能吗? (伪-ISH)

var URI = document.URL;
var qs = URI.split('?');
var keyvalpair = qs[1].split('&');
var reconstructedURI = '&' + keyvalpair;
for(var i = 0; i< keyvalpair.length; i++){
    var key = keyvalpair[i].split('=')[0];
    var val = keyvalpair[i].split('=')[1];
}

答案 1 :(得分:0)

我建议使用Location objectsearch方法(document.locationwindow.location提供)来提取参数,然后修改网址的其余部分,但该API显然特定于Firefox。

我会简化@ DMortensen的答案,只需拆分第一个?,然后修改第一部分(仅为URL的路径部分),然后重新应用第二部分。

如果您需要解析参数,我建议使用jQuery插件Query Parameter Parser:对$.parseQuery(s)的一次调用将拉出所有键的对象&amp;值。

答案 2 :(得分:0)

感谢您的所有答案。我尝试了以下内容并且有效。

function gotoFullSite() {
    var search = window.location.search;
    window.open("http://example.com/"+search)
}
$('#clickable').click(gotoFullSite);

然后使用<a id = "clickable" href="#"></a>。当我单击该链接时,它会在新选项卡中打开包含所有查询参数的正确网站。 (我需要一个新的标签来突破iframe。)