我已成功使用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,看到问题仍然存在。所以,是的。
答案 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&guid=12355235