帮助重构识别用户的一小段Javascript代码';s推荐源
我已经编写了以下一小段javascript(基于出色的函数)来识别用户的来源。我是Javascript新手,虽然下面的代码可以工作,但我想知道是否有更有效的方法来实现同样的结果帮助重构识别用户的一小段Javascript代码';s推荐源,javascript,client-side,referrer,Javascript,Client Side,Referrer,我已经编写了以下一小段javascript(基于出色的函数)来识别用户的来源。我是Javascript新手,虽然下面的代码可以工作,但我想知道是否有更有效的方法来实现同样的结果 try { var path = parseUri(window.location).path; var host = parseUri(document.referrer).host; if (host == '') { alert('n
try {
var path = parseUri(window.location).path;
var host = parseUri(document.referrer).host;
if (host == '') {
alert('no referrer');
}
else if (host.search(/google/) != -1 || host.search(/bing/) != -1 || host.search(/yahoo/) != -1) {
alert('Search Engine');
}
else {
alert('other');
}
}
catch(err) {}
您可以使用替代搜索简化主机检查:
else if (host.search(/google|bing|yahoo/) != -1 {
我还想在提取主机之前测试文档引用器,以防出现“无引用”错误
(我没有测试过这个)。我最终在我的许多项目中定义了一个名为
set
的函数。看起来是这样的:
function set() {
var result = {};
for (var i = 0; i < arguments.length; i++)
result[arguments[i]] = true;
return result;
}
…您可以使用JavaScript的in
操作符和上面定义的set
函数,根据列表优雅地测试结果:
if (domain in set("google", "bing", "yahoo"))
// do stuff
更多信息:
mygoogleclone.myevilsite.com
非常好的观点。你可以将谷歌(和其他网站)的正则表达式修改为类似“^www.google”(com | co…)$”的内容。尽管这需要仔细测试(同样,我还没有测试过)以确保它不会导致任何假阴性。我猜这取决于你所追求的检查有多可靠。
if (domain in set("google", "bing", "yahoo"))
// do stuff