获取渠道来源/判断设备

渠道--截取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。

你可能感兴趣的:(获取渠道来源/判断设备)