【问题标题】:Jquery query string match and change selected HrefJquery 查询字符串匹配并更改选定的 Href
【发布时间】:2016-08-23 15:10:43
【问题描述】:

我试图在查询字符串中找到一个参数并处理两件事。 示例网址 - http://domainname.com?name=y&track=1&promo=true

  1. 将这些查询字符串附加到页面上的所有 url - 我相信这很好。
  2. 为其中包含特定字符串的 url 更改 href url 本身,然后附加查询字符串。这些 href 以不同的方式存在,例如 href 标签、onclick inside image 标签。

    <a href="http://externaldomain.com/?a=88">link</a>, <img src="a.jpg" onclick = document.location.href="http://externaldomain.com/?a=88" />

到目前为止要做第一件事的代码

var querystring = window.location.search.substring(0);
var newurl = "http://changetothisdomain.com/"; //for second criteria
jQuery(document).ready(function() {
  jQuery('a[href]').attr('href', function(index, value) {
    if ((querystring.indexOf("promo=true") > 0) && (value.indexOf('#') != 0)) {
      return value + querystring;
    }
  });
});

我有这个 value.indexOf('#')!=0 这样带有 # 的网址不会更改,因为它是用于 jquery 选项卡的。向这些添加参数会影响这一点。第二件事,我想检查 promo=true 是否存在于 querystring 中,然后检查 href 是否有“a=88”,然后将 href 更改为“newurl”并附加 querystring。

谢谢!

【问题讨论】:

  • 我在我的手机上,试图给你一个更通用的脚本,所以你可以这样做 if (getParm("promo")=="true" && getParm("a")=="88") 由于你没有使用这样的脚本,我假设你没有找到它
  • 好的,谢谢。只是搜索链接不清楚,所以我这样回答。将研究 getparam 方法。再次感谢

标签: jquery query-string


【解决方案1】:

看看这个 - 这不是微不足道的

var querystring = "?blabla=bla&promo=true&bla=bla"; //  window.location.search;
var newurl = "http://changetothisdomain.com/"; //for second criteria

function changeURL(value) {
  if (value.indexOf('#') == 0) return value;
  return (value.indexOf("a=88") == -1 ? value : newurl) + querystring;
}

function changeString(value) {
  if (value.indexOf('#') == 0) return value;
  var match = value.match(/href=([^"]*)/);
  var url = (match.length > 0) ? match[1] : "";
  var replace = url.indexOf("a=88") == -1 ? url : newurl;
  var qString = (replace.indexOf("?") !=-1)?querystring:"&"+querystring.substring(1);
  if (url.indexOf("'") != -1) {
    replace = replace.replace(/'/g, "");
    replace = "'" + replace + qString + "'";
  } else if (url.indexOf('"') != -1) {
    replace = replace.replace(/"/g, "");
    replace = '"' + replace + qString + '"';
  }
  return value.replace(url, replace);
}

$(function() {
  if (querystring.indexOf("promo=true") != -1) {
    $('a[href]').attr('href', function(index, value) {
      return changeURL(value);
    });
    $('img').attr('onclick', function(index, value) {
      return changeString(value);
    });
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a href="http://externaldomain.com/?href=true&a=88">link</a>,
<img src="a.jpg" onclick="document.location.href='http://externaldomain.com/?img=true&a=88'" />
<a href="http://externaldomain.com/?href=true&a=89">link</a>,
<img src="a.jpg" onclick="document.location.href='http://externaldomain.com/?img=true&a=88'" />

【讨论】:

    猜你喜欢
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    相关资源
    最近更新 更多