Javascript/html保留url参数
假设我向某人提供指向我的页面的链接,如下所示 www.linkone.com?大约等于十 当他们访问页面时,参数将在该页面的url中可见。如果在那个页面上,我有一个这样的链接Javascript/html保留url参数,javascript,jquery,html,Javascript,Jquery,Html,假设我向某人提供指向我的页面的链接,如下所示 www.linkone.com?大约等于十 当他们访问页面时,参数将在该页面的url中可见。如果在那个页面上,我有一个这样的链接 <a href="linktwo.html"> Link Two </a> 当他们点击它时,linktwo的url看起来像 www.linkone.com/linktwo.html 是否有任何方法将参数从第一个链接添加到页面中的任何其他链接?所以,当他们访问链接二时,我希望url最终成为 ww
<a href="linktwo.html"> Link Two </a>
当他们点击它时,linktwo的url看起来像
www.linkone.com/linktwo.html
是否有任何方法将参数从第一个链接添加到页面中的任何其他链接?所以,当他们访问链接二时,我希望url最终成为
www.linkone.com/linktwo.html?某物=10
我知道这可能是通过javascript实现的,但是主页上有很多链接到站点内的其他页面,我需要在所有链接上设置参数。实现这一目标的最佳方式是什么
谢谢这是可能的(使用php):
$("a").click(function(e){
e.preventDefault();
var a = $(this).attr('href');
var something = getUrlParameter('something');
var newURL = a+"?something="+something;
window.location.href = newURL;
});
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
};
实现类似功能的一种方法是使用cookie或会话。当用户使用附加参数访问您的站点时,请在父页面上使用该参数设置cookie,以便它可用于其他调用/链接。你也可以在会议上这样做。会话将保留该值,直到会话超时,cookie根据为其设置的到期日期到期
您可以在文档准备就绪时更新锚定
href
属性。下面是当前HTML查询字符串的代码解决方案,其中包含选定的锚href属性
var selectedAnchors = $("a");
selectedAnchors.each( function () {
var itemHref = $(this).attr("href");
if ( itemHref.indexOf("?") > -1 )
itemHref += "&";
else
itemHref += "?";
itemHref += location.search.substr(1);
$(this).attr("href", itemHref );
});
请试试这个。只需用您自己的参数替换单词“something” 谢谢
$("a").click(function(e){
e.preventDefault();
var a = $(this).attr('href');
var something = getUrlParameter('something');
var newURL = a+"?something="+something;
window.location.href = newURL;
});
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
};
$(“a”)。单击(功能(e){
e、 预防默认值();
var a=$(this.attr('href');
var something=getUrlParameter('something');
var newURL=a+“?something=“+something;
window.location.href=newURL;
});
var getUrlParameter=函数getUrlParameter(sParam){
var sPageURL=decodeURIComponent(window.location.search.substring(1)),
sURLVariables=sPageURL.split(“&”),
sParameterName,
我
对于(i=0;i
HTML:
我的建议是:
$('a:not([href=#])').click(function(e) {
e.preventDefault();
// Getting query-string parameters from current page URL.
var query = location.search.substr(1);
// Getting URL from current link;
var url = new URL($(this).attr('href'));
// Updating query-string parameters of current link.
url.search += (url.search.indexOf('?') == 0 ? '&' : '?') + query;
// Getting the link target.
var target = $(this).attr('target');
// Navigating to new URL.
if (target) {
window.open(url.toString(), target);
} else {
location.assign(url.toString());
}
});
如果新链接本身有新参数,或者您想删除旧参数,该怎么办?然后呢?我尝试过本地存储,但不太确定我是否信任这种方法。我还尝试了一个javascript解决方案,它获取参数,然后用附加的参数设置我链接的attr值,但是当你有很多链接时,这看起来效率很低。每个用户的参数始终相同,当页面加载并追加QuielStudio时,短JavaScript代码段可以修改所有<代码> A<代码/>元素。您不必对它们进行个性化的回答。“Ebjin,但是这是可能的PHP没有被标记,所以这是不合适的,除非您询问OP是否考虑使用服务器端。可以在客户端完成的事情。问题有标签是有原因的。如果他有不同于“某物”的querystring键,或者他有多个键怎么办?向上投票这个答案是一个笑话。如果anchor有target属性怎么办?如果你更新链接href,你需要更新动态添加的链接,你可以使用事件委派,比如SO$(“body”).on(“单击”,“a:not([href=#])”,function()…此解决方案部分工作。如果锚点有一个目标=“_blank”属性此解决方案忽略打开新窗口的行为。如果anchor有一个目标属性,该怎么办?他没有提到并清楚地提供了一个示例,该示例显示将只有链接而没有参数。我们再来一次,如果anchor有一个target=“\u blank”属性该怎么办?
<a href="http://google.com/">Google</a>
$('a:not([href=#])').click(function(e) {
e.preventDefault();
// Getting query-string parameters from current page URL.
var query = location.search.substr(1);
// Getting URL from current link;
var url = new URL($(this).attr('href'));
// Updating query-string parameters of current link.
url.search += (url.search.indexOf('?') == 0 ? '&' : '?') + query;
// Getting the link target.
var target = $(this).attr('target');
// Navigating to new URL.
if (target) {
window.open(url.toString(), target);
} else {
location.assign(url.toString());
}
});