JS代码获取搜索引擎来路关键词

最近有个朋友让我帮忙给他们公司网站弄一个功能,可以直接显示对方搜索的关键词,从而提高用户体验度。网上找了两款能用的代码,分享给大家。
var str1=""; 
var str2= ""; 
var refer=document.referrer; 
var sosuo=refer.split(".")[1]; 
var grep=null; 
var str=null; 
var keyword=null; 
var skey="xx"; 
var ykey=""; 
switch(sosuo){ 
  case "baidu": 
    grep=/wd\=.*\&/i; 
    str=refer.match(grep) 
    keyword=str.toString().split("=")[1].split("&")[0]; 
    //console.log(decodeURIComponent(keyword)); 
 ykey=decodeURIComponent(keyword); 
    addCookie('key',decodeURIComponent(keyword),1); 
 //alert(decodeURIComponent(keyword)); 
  break; 
  case "google": 
    grep=/&q\=.*\&/i; 
    str=refer.match(grep) 
    keyword=str.toString().split("&")[1].split("=")[1]; 
    //console.log(decodeURIComponent(keyword)); 
 ykey=decodeURIComponent(keyword); 
    addCookie('key',decodeURIComponent(keyword),1); 
  break; 
  case "sogou": 
    grep=/query\=.*\&/i; 
    str=refer.match(grep) 
    keyword=str.toString().split("&")[1].split("&")[2]; 
    //console.log(decodeURIComponent(keyword)); 
 ykey=decodeURIComponent(keyword); 
    addCookie('key',decodeURIComponent(keyword),1); 
 //alert(decodeURIComponent(keyword)); 
  break; 
  default: 
  addCookie('key','',1); 
} 
var ckey=(getCookie('key')) 
//alert(ckey); 
if(ykey.indexOf(skey)>-1) 
{ 
}else 
{ 
} 
function deleteCookie(name){ 
var date=new Date(); 
date.setTime(date.getTime()-10000); 
document.cookie=name+"=v; expires="+date.toGMTString(); 
} 
function getCookie(name){ 
var strCookie=document.cookie; 
var arrCookie=strCookie.split("; "); 
for(var i=0;i < arrCookie.length;i++){ 
var arr=arrCookie[i].split("="); 
if(arr[0]==name)return arr[1]; 
} 
return ""; 
} 
function addCookie(name,value,expiresHours){ 
var cookieString=name+"="+escape(value); 
//判断是否设置过期时间 
if(expiresHours>0){ 
var date=new Date(); 
date.setTime(date.getTime+expiresHours*3600*1000); 
cookieString=cookieString+"; expires="+date.toGMTString(); 
} 
document.cookie=cookieString; 
} 
document.write(ykey); 
if(ykey=="") 
{} 
else 
{ 
 document.write(""); 
} 

说明一下,第一个的split("=")[1].split("&")[0];,中间的&和=号是分隔符。也就是提取&和=中间的字符。

 
function getDomainQuery(url) {   
    var d = [];   
    var st = url.indexOf('//', 1);   
    var _domain = url.substring(st + 1, url.length);   
    var et = _domain.indexOf('/', 1);   
    d.push(_domain.substring(1, et));   
    d.push(_domain.substring(et + 1, url.length));   
    return d   
}   
   
function route() {   
    var eg = [];   
    eg.push(['baidu', 'wd']);   
    eg.push(['google', 'q']);   
    eg.push(['soso', 'w']);   
    eg.push(['yodao', 'q']);   
    eg.push(['bing', 'q']);   
    eg.push(['yahoo', 'q']);   
    eg.push(['sogou', 'query']);   
    eg.push(['gougou', 'search']);   
    eg.push(['360', 'q']);   
   
    var dq = getDomainQuery(document.referrer);   
       
    var keyword=null;   
    var grep=null;   
    var str=null;   
   
    for(var el in eg){   
        var s = eg[el];   
        var DandQ=String(s).split(","); //字符分割   
        if (dq[0].indexOf(DandQ[0])>0){   
            eval("grep=/"+DandQ[1]+"\=.*\&/i;");   
            str = dq[1].match(grep);   
            keyword = str.toString().split("=")[1].split("&")[0];   
            keyword = decodeURIComponent(keyword);   
            alert(keyword);   
            return false;   
        }   
    }   
   
}   
   
route();   

第二个是提示关键词,大家可以结合第一个输入关键词。

转自:http://www.oicqzone.com/pc/2014072719296.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值