获取渠道来源/判断设备

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,705评论 25 709
  • 每天我们都活在普通的生活中,每天我们都渴望不一样,有时,我们突发奇想,我们可以创造奇迹吗?我们行吗?亲爱的...
    佳茹梦阅读 380评论 0 2
  • IT大鹏阅读 175评论 0 0
  • 这几天工作压力大,天天早出晚归,加上追《人民的名义》的电视剧,学习时间减少,但是写作的目标还是一直记心底,...
    树树妈阅读 524评论 1 4
  • 灯灭了,人被送进了一片浓黑之中。此时梦未来,此时最宜思。能想起很多事情,能勾起很多思绪。夜里的风,吹皱了一...
    冰夫阅读 139评论 0 0