Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/html保留url参数_Javascript_Jquery_Html - Fatal编程技术网

Javascript/html保留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

假设我向某人提供指向我的页面的链接,如下所示

www.linkone.com?大约等于十

当他们访问页面时,参数将在该页面的url中可见。如果在那个页面上,我有一个这样的链接

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