我有以下代码,用于检测使用了哪个搜索引擎和搜索词:
if (document.referrer.search(/google\.*/i) != -1) {
var start = document.referrer.search(/q=/);
var searchTerms = document.referrer.substring(start + 2);
var end = searchTerms.search(/&/);
end = (end == -1) ? searchTerms.length : end;
searchTerms = searchTerms.substring(0, end);
if (searchTerms.length != 0) {
searchTerms = searchTerms.replace(/\+/g, " ");
searchTerms = unescape(searchTerms);
alert('You have searched: '+searchTerms+' on google');
}
}
这确实有效,但遗憾的是它有时无法正常工作。
有时,如果引荐人甚至不是Google,我会收到搜索字词的警告:ttp://www.domain.com(开头没有H)我认为这可能会导致错误。
感谢任何帮助!
答案 0 :(得分:1)
您是否尝试过利用现有的JS URL解析方案?它可能会为您节省大量时间。例如:
答案 1 :(得分:1)
它正在削减“h”,因为q=
不在引用者字符串中。所以你的start
变量是-1。然后你添加2来获得带有子串的searchTerms
var。您需要检查start
是否等于-1并返回。
我也认为你的“谷歌”字符串检测不是防弹的,我宁愿做这样的事情......
var ref = document.referrer;
var pcol = ref.indexOf("://") + 3;
if(ref.indexOf("google.com") == pcol || ref.indexOf("www.google.com") == pcol) {
// It is google
}
最后,您应该使用decodeURIComponent
代替unescape
。