在2种情况下将GUID添加到URL

时间:2013-04-08 18:06:23

标签: javascript query-string guid

我已成功使用Javascript向网址添加GUID。 这是我目前正在使用的代码:

    <script>  
  if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) ||(navigator.userAgent.match(/iPad/i))) {
       function S4() { 
           return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);  
       }
    // then to call it, plus stitch in '4' in the third group
       guid = (S4() + S4() + "-" + S4() + "-4" + S4().substr(0, 3) + "-" + S4() + "-" + S4() + S4() + S4()).toLowerCase();
    //alert(guid);
      var lc = window.location;
       if (!(/\?guid=/.test(lc))) { 
          window.location = window.location + '?guid=' + guid 
      }
    }//End if iPhone
</script>

问题:

现在,我想测试URL以查看它是否已在URL中有查询字符串,然后如果确实如此,请将GUID附加到查询带有字符串的URL的末尾。我怎么做?

假设查询带有字符的URL如下所示: http://mysite.com/mypage?query=http://mysite.com/myotherpage

我想要将GUID添加到查询URL的末尾,如下所示:

http://mysite.com/mypage?query=http://mysite.com/myotherpage&guid=123456789153456

注意:您可能会问我为什么检测iPhone / iPod / iPad并在网址上添加GUID。这是因为iOS 6.0+中结合移动Safari的文档和疯狂的错误/功能仍未通过“超级缓存”POST调用修复。所以添加一个GUID迫使好的iToys强制进行新的页面查找。讨厌破解这个,但是我们尝试了Pragma = no-cache,Expires = 0和Cache-Control = no-cache,看到问题仍然存在。所以,是的。

1 个答案:

答案 0 :(得分:1)

你可能需要这个逻辑:

var current = window.location.search;
var addon = "";
if (current.charAt(0) !== "?") {    // Querystring Doesn't start with "?"
    addon += "?";
} else {    // Querystring does start with "?" (and maybe more)
    addon += current;
}
if (current.indexOf("guid=") < 0) {    // Querystring Doesn't contain "guid="
    if (current.length > 1) {    // Querystring Contains more than "?_"
        addon += "&";
    }
    addon += "guid=" + guid;
    window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + addon;
}

因此它将检查查询字符串是否以“?”开头。如果没有,则添加它。

如果查询字符串中有多个字符(意味着它不仅仅是“?”......类似于“?a”),那么它会添加一个“&amp;”。

最后,它还添加了“guid = 23482934”(无论价值如何)。

所以场景是:

  • “” - 应该成为?guid=12355235
  • “?” - 应该成为?guid=12355235
  • “?asdf = fdsa” - 应该成为?asdf=fdsa&guid=12355235