在做网站优化的时候,需要了解用户搜索引擎来源,可以在Html页面中通过JS获取document.referrer,然后在document.referrer中通过搜索引擎对应的域名进行识别。 比如百度对应域名中的存在‘baidu’,360 搜中,含有"so.com",可以作为标识。
// 从referrer获取搜索引擎信息
function getSearchEngine ()
{
// 如果是来路域名为其它域名,默认为从SEM过来的
var result = "SEM" ;
var macth = new Array();
macth.push(["baidu","BAIDU"]);
macth.push(["sogou","SOGOU"]);
macth.push(["so.com","360"]);
macth.push(["google","GOOGLE"]);
macth.push(["bing.com","BING"]);
var ref=document.referrer;
for(var i=0; i< macth.length; i++)
{
if(ref.indexOf(macth[i][0])>-1)
{
result = macth[i][1];
break;
}
}
return result;
}
上面的方法是直接在整串referrer的Url中判断是否含有关键信息,但是有可能不精准,因为在Url中路径或者参数中也有可能含有关键信息,这样就不太严谨。因为在这里用作标志的关键字母是在域名中的,我们可以先将referrer的域名获取下来再进行关键标志的判断,这样将变得精准。
// 从refer获取来源域名
function getReferDomian() {
var strLength = document.referrer.length;
var strUrl = document.referrer.substring(7, strLength);
return strUrl.substring(0, strUrl.indexOf("/"));
}
function getSearchEngine ()
{
// 如果是来路域名为其它域名,默认为从SEM过来的
var result = "SEM" ;
var macth = new Array();
macth.push(["baidu","BAIDU"]);
macth.push(["sogou","SOGOU"]);
macth.push(["so.com","360"]);
macth.push(["google","GOOGLE"]);
macth.push(["bing.com","BING"]);
var ref=getReferDomian();
for(var i=0; i< macth.length; i++)
{
if(ref.indexOf(macth[i][0])>-1)
{
result = macth[i][1];
break;
}
}
return result;
}
通过这种Js的方式是比较方便和直接的方式,希望对大家有帮助!