向当前域中的每个链接添加/保留查询字符串

时间:2019-03-15 03:56:38

标签: javascript

我只能做些有限的事情,因此很遗憾,cookie和local_storage并不是一个选择。

我正在寻找一种解决方案,以在网站的每个页面上保留特定的查询字符串...

假设查询字符串为: ?keepme=true

我认为最好的方法是修改每个具有指向当前域URL的<a>标签,并修改链接以包含查询字符串?

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以在DOMContentLoaded事件中添加脚本,并将字符串添加到所有定位标记

window.addEventListener("DOMContentLoaded", function(e) {
  var anchortags = document.querySelectorAll("a");
  anchortags.forEach(function(tag) {
      if(tag.hostname == 'stackoverflow.com' || tag.hostname == ''){
        tag.href = tag.href + '&keepme=true';
      }          
  });
}, false);

答案 1 :(得分:0)

如果要在客户端的所有页面中检查keepme变量,可以使用localstorage代替查询字符串。

如果keepme变量需要在服务器端处理,则应使用session来存储值。

如果要手动添加查询字符串,可以这样做。

function addOrUpdateQueryStringParameter(uri, key, value) {
  var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
  var separator = uri.indexOf('?') !== -1 ? "&" : "?";
  if (uri.match(re)) {
    return uri.replace(re, '$1' + key + "=" + value + '$2');
  }
  else {
    return uri + separator + key + "=" + value;
  }
}

console.log(addOrUpdateQueryStringParameter('/test-url','keepme', true))