移动端(h5)的一些实用方法,加减乘除、弹窗禁止滑动,url参数,机型判断

219 阅读1分钟

1、获取url参数

GetQueryString(name) { 
    const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); 
    const r = window.location.search.substr(1).match(reg);
    if (r != null) return decodeURIComponent(r[2]); 
    return null; 
}

2、安卓还是ios,用于判断环境

getDeviceType() {
    const u = navigator.userAgent; 
    const isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); 
    const isAndroid = u.indexOf("Android") > -1 || u.indexOf("Adr") > -1; 
    //android终端 
    if (isiOS) {
        return 1; 
    } else if (isAndroid) { 
        return 2;
    } 
}

3、加减乘除,解决精度丢失问题

// 加
accAdd: function (arg1, arg2) {
    var r1, r2, m;
    try {
        r1 = arg1.toString().split(".")[1].length;
    } catch (e) {
        r1 = 0;
    }
    try {
        r2 = arg2.toString().split(".")[1].length;
    } catch (e) {
        r2 = 0;
    }
    m = Math.pow(10, Math.max(r1, r2));
    return (Math.round(arg1 * m) + Math.round(arg2 * m)) / m;
}
// 除
accDiv: function (arg1, arg2) {
    var t1 = 0,
        t2 = 0,
        r1,
        r2;
    var t1 = 0,
        t2 = 0,
        r1,
        r2;
    try {
        t1 = arg1.toString().split(".")[1].length;
    } catch (e) {}
    try {
        t2 = arg2.toString().split(".")[1].length;
    } catch (e) {}
    try {
        r1 = Number(arg1.toString().replace(".", ""));
        r2 = Number(arg2.toString().replace(".", ""));
    } catch (e) {}
    return (r1 / r2) * Math.pow(10, t2 - t1);
}
// 减
Subtr: function (arg1, arg2) {
    var r1, r2, m, n;
    try {
        r1 = arg1.toString().split(".")[1].length;
    } catch (e) {
        r1 = 0;
    }
    try {
        r2 = arg2.toString().split(".")[1].length;
    } catch (e) {
        r2 = 0;
    }
    m = Math.pow(10, Math.max(r1, r2));
    n = r1 >= r2 ? r1 : r2;
    return ((arg1 * m - arg2 * m) / m).toFixed(n);
}
// 乘
accMul: function (arg1, arg2) {
    var m = 0,
        s1 = arg1.toString(),
        s2 = arg2.toString();

    try {
        m += s1.split(".")[1].length;
    } catch (e) {}

    try {
        m += s2.split(".")[1].length;
    } catch (e) {}

    return (Number(s1.replace(".", "")) * Number(s2.replace(".", ""))) / Math.pow(10, m);
}

4、弹窗后禁止滑动

// 弹窗后禁止滑动
addDisableScrollBody() {
    // 在弹出层显示之前,记录当前的滚动位置
    this.scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
    // 使body脱离文档流
    document.body.classList.add("dialog-open");
    // 把脱离文档流的body拉上去!否则页面会回到顶部!
    document.body.style.top = -this.scrollTop + "px";
}

removeDisableScrollBody() 
    document.body.classList.remove("dialog-open");
    // 滚回到老地方
    document.body.scrollTop = document.documentElement.scrollTop = this.scrollTop;
}

页面弹窗显示时调用addDisableScrollBody,弹窗关闭后调用removeDisableScrollBody