在包含以下网址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
)。
答案 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 object的search
方法(document.location
或window.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
。)