获取渠道来源/判断设备
2018-05-28 本文已影响0人
南陈_
渠道--截取url拼接
先顺一下项目开发前的准备
如下网址:
sem.xxxxxx.com
1、用户输入之后,会根据当前设备判断打开pc还是移动端
2、提交表单时除了基本信息要传项目来源
ps:项目来源也就是渠道,是用户手动输入的。
例如:sem.xxxxxx.com/?q=123
q为自定义 123是例子
前端要做的就是在他手动输入之后,表单提交后把123要传进后台
有一个坑就是不论页面怎么跳转,q=123 始终都要在网址上,因为这样表单页面才不会因为你页面跳转之后q消失了,而找不到渠道。
下面是获取渠道的方法:
1、判断设备中的获取渠道
$.extend({
getUrlVars: function () {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function (name) {
return $.getUrlVars()[name];
}
});
function IsPC() {
var userAgentInfo = navigator.userAgent;
var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod");
var flag = true;
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; }
}
return flag;
}
function isUndefined(h) {
var c = $.getUrlVar("q");
if (typeof c != "undefined") {
location.href = h + '?q=' + c;
} else {
location.href = h;
}
};
if (IsPC()) {
isUndefined('./pc/index.html')
} else {
isUndefined('./m/index.html')
}
2、页面跳转获取渠道
//来源渠道
function getQueryString(name, needdecoed) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var lh = window.location.search;
if (needdecoed) {
lh = decodeURI(window.location.search)
}
var r = lh.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
}
//点击时在要跳转的链接中加入
$('.oneM_button a').click(function () {
var q = getQueryString('q');
$(this).attr('href', './form.html?q=' + q);
})
3、表单提交中的获取渠道
//来源渠道
function getQueryString() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
};
//提交用户信息
function submitdata() {
//判断渠道不为空
var dataSources = "";
if (typeof (getQueryString()["q"]) != "undefined") {
dataSources = getQueryString()["q"];
}
var _data = {
渠道字段: dataSources, //传入的渠道
};
//省略ajax...
}
开发结束之后测试渠道是否正常,不可传入undefined。