2015-10-14 58 views
2

说我提供有人链接到我的网页看起来像下面的JavaScript/HTML保持网址参数

www.linkone.com?something=ten

当他们访问的页面,该参数将在该页面的URL中可见。如果该网页上我再有像这样

<a href="linktwo.html"> Link Two </a> 

链接当他们点击它,连接两个的URL看起来像

www.linkone.com/linktwo.html

有没有办法将第一个链接的参数添加到页面中的任何其他链接?所以,当他们访问连接两个,我想的URL最终被

www.linkone.com/linktwo.html?something=ten

我知道这可能是可以通过JavaScript,但该网页上有很多链接到网站内的其他页面,我需要param所有链接。达到此目的的最佳方法是什么?

感谢

+1

如果新的链路本身具有新的参数,或者你想删除旧的参数?然后怎样呢? –

+0

我试过本地存储,但不太确定我相信这种方法。我也尝试了一个JavaScript解决方案,它获取参数,然后使用此参数设置我的链接的attr值,但是当您有很多链接时,这看起来效率很低。 –

+0

p.s.参数对于每个用户都是一样的,它们永远不会改变 –

回答

-1

这是可能的(用PHP):

<a href="http://www.linkone.com/linktwo.html?something= 
<?php echo $_GET["something"]; ?>"> Link Two </a> 
+0

不是这个问题的确切答案。 – ebilgin

+0

@ebilgin但这是可能的 –

+2

PHP没有被标记,所以这是不合适的,除非你问OP是否会考虑使用服务器端来完成客户端可以完成的任务。 **问题有标签的原因** – NewToJS

5
$('a:not([href=#])').on('click', function (e) { 
    e.preventDefault(); 
    location.href = this.href + "your param"; 
}); 
+0

如果锚具有目标属性,该怎么办? – ebilgin

+0

最好更新链接href属性本身 –

+0

如果你更新链接href你需要更新那些动态添加的链接,用这个你可以像使用$(“body”)。on(“click” 'a:not([href =#])',function()... –

1

一个实现类似功能的方法是使用Cookie或会话。当用户使用其他参数访问您的站点时,请使用该参数在父页面上设置一个cookie,以便其可用于其他呼叫/链接。你也可以在会话中做到这一点。会话将保留该值,直到会话超时并且Cookie基于为其设置的到期日期过期。

Link to Cookie Reference

1

您可以更新锚在文件准备href属性。下面的代码解决方案为当前的HTML querystrings提供了选定的anchor 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); 

}); 
1

请试试这个。只需用您自己的参数替换单词“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]; 
     } 
    } 
}; 

HTML:

<a href="http://google.com/">Google</a> 
+0

如果anchor有一个目标属性 – ebilgin

+0

他没有提到,并明确提供了一个例子,显示只有链接没有参数。 – user2505019

0

我的建议是:

$('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; 

    // Navigating to new URL. 
    if ('_blank' == $(this).attr('target')) { 
    window.open(url.toString()); 
    } else { 
    location.assign(url.toString()); 
    } 
}); 
+0

这里我们再次说明,如果anchor具有target =“_ blank”属性? – ebilgin

+0

@ebilgin谢谢,更新代码片段。 – Valentin