Javascript / html keep url params

时间:2015-10-14 11:15:01

标签: javascript jquery html

说我向某人提供了一个指向我的页面的链接,如下所示

  

www.linkone.com?something=ten

当他们访问该页面时,该页面的URL将显示该参数。如果在那个页面上我有一个像这样的链接

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

当他们点击它时,Link Two的网址看起来像

  

www.linkone.com/linktwo.html

有没有办法将第一个链接中的参数添加到页面中的任何其他链接?因此,当他们访问Link Two时,我想以url结束

  

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

我知道这可能是通过javascript实现的,但主页上有很多链接到网站内的其他页面,我需要在所有链接上进行参数化。实现这一目标的最佳方法是什么?

由于

6 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

Link to Cookie Reference

答案 2 :(得分:1)

您可以在Document Ready处更新锚点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 );

});

答案 3 :(得分:1)

请试试这个。只需替换#34;&#34;用你自己的参数。

由于

$("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>

答案 4 :(得分:1)

我的建议是:

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

答案 5 :(得分:-3)

这是可能的(使用php):

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