Js通过referrer获取搜索引擎来源

2016/5/20 11:17:05 人评论 次浏览 分类:JavaScript


在做网站优化的时候,需要了解用户搜索引擎来源,可以在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的方式是比较方便和直接的方式,希望对大家有帮助!

相关资讯

    暂无相关的资讯...