最近要优化下着陆页,获取用户搜索的关键字!
首先第一步!
1、获取连接!
//var refer = document.referrer;//获取连接 var refer = "https://wap.sogou.com/web/searchList.jsp?uID=DErXESBah2gq1Gya&v=5&from=index&pid=sogou-waps-7880d7226e872b77&w=1274&t=1566610756546&s_t=1566610779936&s_from=index&pg=webSearchList&inter_index=&keyword=%E7%BE%8E%E5%AE%B9&suguuid=b8896b29-1621-4e4e-843b-cc68df5e921d&sugsuv=AAHeAuV3KQAAAAqHEEtH4gAAZAM&sugtime=1566610779936&mcv=22&pcl=177,165&sed=0&ml=14&sct=32";//搜狗的来源连接! var refers = "https://m.sm.cn/s?q=%E7%BE%8E%E5%AE%B9&from=smor&safe=1&by=submit&snum=6";//神马的来源连接!
为了测试方便,我随便搜索了2个美容的连接进行测试!
2、我们设置几个参数
var grep = null;//正则用来获取连接内的关键字信息 var str = null;// var keyword = null;//关键字
3、判断连接并获取关键字
1、判断搜索引擎
我们需要先用split
函数来判断是哪个引擎进来的!
var sosuo = refer.split(".")[1];
这个函数的作用是根据指定字符来分割成数组! 浏览器域名都是 m.baidu.com或者m.xhcss.com
那么我们分割后直接可以获取第一个数组即可获得baidu或者xhcss这个值了!
2、根据搜索引擎来判断关键字,这里我们就用switch,具体可以自行百度这个方法!大概就是和if else差不多!
switch (sosuo) { case "sogou"://是否是搜狗引擎 grep = /keyword\=.*\&/i;//搜狗引擎的关键字参数是keyword str = refer.match(grep) console.log(str); keyword = str.toString().split("&")[0].split("=")[1]; console.log(decodeURIComponent(keyword));// ykey = decodeURIComponent(keyword);//函数编码的 URI 进行解码。 addCookie('key', decodeURIComponent(keyword), 1); //alert(decodeURIComponent(keyword)); break; }
我们来说下,下面这两个!
grep = /keyword\=.*\&/i;//正则获取wd开始的全部字符 str = refer.match(grep)//获取正则表达式后的全部字符
如果你在里面写q就能获取到q开始的全部字符,这里你的具体参考浏览器的关键字的参数是什么!
grep = /q\=.*\&/i;//正则获取q开始的全部字符
3、多个
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 "sm": grep = /q\=.*\&/i; str = refer.match(grep); console.log(str); keyword = str.toString().split("&")[0].split("=")[1]; console.log(decodeURIComponent(keyword)); ykey = decodeURIComponent(keyword); addCookie('key', decodeURIComponent(keyword), 1); break; case "sogou": grep = /keyword\=.*\&/i; str = refer.match(grep) console.log(str); keyword = str.toString().split("&")[0].split("=")[1]; console.log(decodeURIComponent(keyword)); ykey = decodeURIComponent(keyword); addCookie('key', decodeURIComponent(keyword), 1); //alert(decodeURIComponent(keyword)); break; default: addCookie('key', '', 1); }
其实到这里就可以了! 不过这个方法是我在网上找到的!里面有点错误,我稍微研究修复了下!
他增加了一个cookie,没怎么去研究具体作用了! 可以删掉!
全部代码如下
<script type="text/javascript"> //var refer = document.referrer;// var refer = "https://wap.sogou.com/web/searchList.jsp?uID=DErXESBah2gq1Gya&v=5&from=index&pid=sogou-waps-7880d7226e872b77&w=1274&t=1566610756546&s_t=1566610779936&s_from=index&pg=webSearchList&inter_index=&keyword=%E7%BE%8E%E5%AE%B9&suguuid=b8896b29-1621-4e4e-843b-cc68df5e921d&sugsuv=AAHeAuV3KQAAAAqHEEtH4gAAZAM&sugtime=1566610779936&mcv=22&pcl=177,165&sed=0&ml=14&sct=32";//搜狗的来源连接! var refers = "https://m.sm.cn/s?q=%E7%BE%8E%E5%AE%B9&from=smor&safe=1&by=submit&snum=6";//神马的来源连接! 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 "sm": grep = /q\=.*\&/i; str = refer.match(grep); console.log(str); keyword = str.toString().split("&")[0].split("=")[1]; console.log(decodeURIComponent(keyword)); ykey = decodeURIComponent(keyword); addCookie('key', decodeURIComponent(keyword), 1); break; case "sogou": grep = /keyword\=.*\&/i; str = refer.match(grep) console.log(str); keyword = str.toString().split("&")[0].split("=")[1]; 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) { console.log("又cookic"); } 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(""); } </script>