前端工具集1

base64转2进制(js)

// base64编码表
var map = {
    "0": 52,
    "1": 53,
    "2": 54,
    "3": 55,
    "4": 56,
    "5": 57,
    "6": 58,
    "7": 59,
    "8": 60,
    "9": 61,
    "A": 0,
    "B": 1,
    "C": 2,
    "D": 3,
    "E": 4,
    "F": 5,
    "G": 6,
    "H": 7,
    "I": 8,
    "J": 9,
    "K": 10,
    "L": 11,
    "M": 12,
    "N": 13,
    "O": 14,
    "P": 15,
    "Q": 16,
    "R": 17,
    "S": 18,
    "T": 19,
    "U": 20,
    "V": 21,
    "W": 22,
    "X": 23,
    "Y": 24,
    "Z": 25,
    "a": 26,
    "b": 27,
    "c": 28,
    "d": 29,
    "e": 30,
    "f": 31,
    "g": 32,
    "h": 33,
    "i": 34,
    "j": 35,
    "k": 36,
    "l": 37,
    "m": 38,
    "n": 39,
    "o": 40,
    "p": 41,
    "q": 42,
    "r": 43,
    "s": 44,
    "t": 45,
    "u": 46,
    "v": 47,
    "w": 48,
    "x": 49,
    "y": 50,
    "z": 51,
    "+": 62,
    "/": 63
};
function base64to2(base64_str,type) {
    var len = base64_str.length * 0.75, // 转换为int8array所需长度
        base64 = base64_str.replace(/=*$/, ''); // 去掉=号(占位的)
        len = len - (base64_str.length - base64.length);
    var int8 = new Uint8Array(len); //设置int8array视图(无符号)
    var arr1, arr2, arr3, arr4, p = 0;
    for (var i = 0; i < base64.length; i += 4) {
        arr1 = map[base64[i]]; // 每次循环 都将base644个字节转换为3个int8array字节
        arr2 = map[base64[i + 1]];
        arr3 = map[base64[i + 2]];
        arr4 = map[base64[i + 3]];
        // 假设数据arr 数据 00101011 00101111 00110011 00110001
        int8[p++] = arr1 << 2 | arr2 >> 4;
        // 上面的操作 arr1向左边移动2位 变为10101100
        // arr2 向右移动4位:00000010
        // | 为'与'操作: 10101110
        int8[p++] = arr2 << 4 | arr3 >> 2;
        if (base64.length-4==i) {//最后末尾的“=”只是占位符,无意义,不处理
            if (base64_str.length == base64.length){//相等表示无“=”
                int8[p++] = arr3 << 6 | arr4;
            }
        }else{
            int8[p++] = arr3 << 6 | arr4;
        }
    }
    return int8;
}

arrayBuffer转base64(js)

function arrayBufferToBase64(buffer) { //arrayBuffer转base64
    var binary = '';
    var bytes = new Uint8Array(buffer);
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode(bytes[i]);
    }
    return window.btoa(binary);
}

arrayBuffer转16进制(js)

function arrayBuffer2hex(buffer) {//二进制转十六进制
    var hexArr = Array.prototype.map.call(
        new Uint8Array(buffer),
        function (bit) {
            return ('00' + bit.toString(16)).slice(-2);
        }
    );
    return hexArr.join('');
}

xml转json(js)

xotree库源代码地址:https://github.com/search?q=xotree&type=Code

function xml2json(new_data) {
        if (typeof new_data == "string") {
            var xotree = new XML.ObjTree();
            return xotree.parseXML(new_data);
        }
 }

base64算法封装(js)

function Base64() { //base64算法封装
	_keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	this.encode = function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		input = _utf8_encode(input);
		while (i < input.length) {
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
			output = output +
				_keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
				_keyStr.charAt(enc3) + _keyStr.charAt(enc4);
		}
		return output;
	};
	this.decode = function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		while (i < input.length) {
			enc1 = _keyStr.indexOf(input.charAt(i++));
			enc2 = _keyStr.indexOf(input.charAt(i++));
			enc3 = _keyStr.indexOf(input.charAt(i++));
			enc4 = _keyStr.indexOf(input.charAt(i++));
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			output = output + String.fromCharCode(chr1);
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
		}
		output = _utf8_decode(output);
		return output;
	};
	_utf8_encode = function (string) {
		string = string.replace(/\r\n/g, "\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			} else if ((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			} else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}
		return utftext;
	};
	_utf8_decode = function (utftext) {
		var string = "",
			c, c1, c2;
		var i = 0;
		c = c1 = c2 = 0;
		while (i < utftext.length) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			} else if ((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i + 1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			} else {
				c2 = utftext.charCodeAt(i + 1);
				c3 = utftext.charCodeAt(i + 2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3&63));
				i += 3;
			}
		}
		return string;
	};
}

获取指定范围随机数(js)

function randomFrom(lowerValue, upperValue) { 
  	return Math.floor(Math.random() * (upperValue - lowerValue + 1) + lowerValue);
}

设备和浏览器判断(js)

function isIE() { //判断是否是IE浏览器且给出ie版本
    var userAgent = navigator.userAgent;
    var IE = userAgent.indexOf("edge") > -1 || userAgent.indexOf("compatible") > -1 || userAgent.indexOf("MSIE") > -1 || (userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11") > -1);
    if (IE) {
        if (navigator.userAgent.indexOf("rv:11.0") > -1 && navigator.userAgent.indexOf("NT 10") > -1) {
            return "win10系统IE11";
        } else if (navigator.userAgent.indexOf("rv:11.0") > -1) {
            return "IE11";
        } else if (navigator.userAgent.indexOf("edge") > -1) {
            return "edge";
        } else if (navigator.userAgent.indexOf("MSIE 10") > -1) {
            return "IE10";
        } else if (navigator.userAgent.indexOf("MSIE 9") > -1) {
            return "IE9";
        } else if (navigator.userAgent.indexOf("MSIE 8") > -1) {
            return "IE8";
        } else {
            return "IE较低";
        }
    } else {
        return false;
    }
}
function detectOS(bool) {//判断设备系统类型
    var sUserAgent = navigator.userAgent;
    if (bool) {
        if (/(iPhone|iPad|iPod|iOS)/i.test(sUserAgent)) {
            return "IOS";
        } else if (/(Android)/i.test(sUserAgent)) {
            return "Android";
        } else {
            var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
            var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel");
            if (isMac) return "Mac";
            var isUnix = (navigator.platform == "X11") && !isWin && !isMac;
            if (isUnix) return "Unix";
            var isLinux = (String(navigator.platform).indexOf("Linux") > -1);
            if (isLinux) return "Linux";
            if (isWin) {
                var isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;
                if (isWin2K) return "Win2000";
                var isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 || sUserAgent.indexOf("Windows XP") > -1;
                if (isWinXP) return "WinXP";
                var isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows 2003") > -1;
                if (isWin2003) return "Win2003";
                var isWinVista = sUserAgent.indexOf("Windows NT 6.0") > -1 || sUserAgent.indexOf("Windows Vista") > -1;
                if (isWinVista) return "WinVista";
                var isWin7 = sUserAgent.indexOf("Windows NT 6.1") > -1 || sUserAgent.indexOf("Windows 7") > -1;
                if (isWin7) return "Win7";
                var isWin7 = sUserAgent.indexOf("Windows NT 6.3") > -1 || sUserAgent.indexOf("Windows 8") > -1;
                if (isWin7) return "Win8";
                var isWin7 = sUserAgent.indexOf("Windows NT 10.0") > -1 || sUserAgent.indexOf("Windows 10.0") > -1;
                if (isWin7) return "Win10";
            }
            return "otherPC";
        }
    } else {
        var flag = true;//PC端
        var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod", "iOS"];
        for (var index = 0; index < Agents.length; index++) {
            if (sUserAgent.indexOf(Agents[index]) > -1) {
                flag = false;//移动端
            }
        }
        return flag;
    }
}
function myBrowser() { //判断浏览器类型
    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
    var isOpera = userAgent.indexOf("Opera") > -1;
    if (isOpera) {
        return "Opera"
    }; //判断是否Opera浏览器
    if (userAgent.indexOf("Firefox") > -1) {
        return "FF";
    } //判断是否Firefox浏览器
    if (userAgent.indexOf("Chrome") > -1 || userAgent.indexOf("WebKit") > -1) {
        return "Chrome";
    }
    if (userAgent.indexOf("Safari") > -1) {
        return "Safari";
    } //判断是否Safari浏览器
    if (userAgent.indexOf("compatible") > -1 || userAgent.indexOf("MSIE") > -1 || (userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0") > -1) > -1) {
        return "IE";
    }; //判断是否IE浏览器
}
function typeIphone() { //判断ios版本
    var uas = navigator.userAgent;
    var a = uas.match(/OS 7_[1-9] /i);
    var b = uas.match(/OS 7_[1-9]_[0-9] /i);
    var c = uas.match(/OS 8_[0-9] /i);
    var d = uas.match(/OS 8_[0-9]_[0-9] /i);
    var c1 = uas.match(/OS 9_[0-9] /i);
    var d1 = uas.match(/OS 9_[0-9]_[0-9] /i);
    var e1 = uas.match(/OS 10_[0-9] /i);
    var e = uas.match(/OS 10_[0-9]_[0-9] /i);
    var f1 = uas.match(/OS 11_[0-9] /i);
    var f = uas.match(/OS 11_[0-9]_[0-9] /i);
    if (a || b) {
        console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS7系统");
    } else if (c || c1) {
        console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS8系统");
    } else if (d || d1) {
        console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS9系统");
    } else if (e || e1) {
        console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS10系统");
    } else if (f || f1) {
        console.log("w:" + $(window).width() + "h:" + $(window).height() + "iPhone手机IOS11系统");
    }
}
function typeDev() { //判断设备
    var ua = navigator.userAgent.toLowerCase();
    if (ua.match(/iPhone/i) == "iphone") {
        typeIphone();
    } else if (ua.match(/Android/i) == "android") {
        if (ua.match(/MicroMessenger/i) == "micromessenger") {
            console.log("w:" + $(window).width() + "h:" + $(window).height() + "android手机微信浏览器");
        } else {
            console.log("w:" + $(window).width() + "h:" + $(window).height() + "android手机");
        }
    } else if (ua.match(/Windows Phone/i) == "Windows Phone") {
        console.log("w:" + $(window).width() + "h:" + $(window).height() + "Windows Phone系统手机");
    } else if (ua.match(/SymbianOS/i) == "SymbianOS") {
        console.log("w:" + $(window).width() + "h:" + $(window).height() + "诺基亚Symbian系统手机");
    } else if (ua.match(/iPad/i) == "iPad") {
        console.log("w:" + $(window).width() + "h:" + $(window).height() + "ipad" + ua);
    } else {
        console.log("w:" + $(window).width() + "h:" + $(window).height() + "电脑");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值