Lidong's blog

实用的 JavaScript 代码片段

欢迎访问新站点: https://www.yidiankuaile.com/post/

  1. 实现字符串长度截取

  2. 获取域名主机

  3. 转义html标签

  4. 还原html标签

  5. 时间日期格式转换

  6. 判断是否为数字类型

  7. 设置cookie值

  8. 获取cookie值

  9. 加入收藏夹

  10. 设为首页

  11. 加载样式文件

  12. 返回按ID检索的元素对象

  13. 元素显示的通用方法

  14. 检验URL链接是否有效

  15. 格式化CSS样式代码

  16. 压缩CSS样式代码

  17. IP转成整型

  18. 整型解析为IP地址

  19. 实现checkbox全选与全不选

  20. 判断是否移动设备

  21. 判断是否移动设备 userAgent 访问

  22. 判断是否苹果移动设备访问

  23. 判断是否安卓移动设备访问

  24. 判断是否在安卓上的谷歌浏览器

  25. 完美判断是否为网址

  26. 随机数时间戳

  27. 确认是否键盘有效输入值

  28. 时间个性化输出功能

  29. 获取单选按钮的值

  30. 获取复选框的值

  31. 判断是否为邮箱

  32. 判断字符串是否大于规定的长度

  33. 判断字符串是否为小数

  34. 判断字符串是否为整数

  35. 判断字符串是否为浮点数

  36. 判断字符串是否邮政编码

  37. 用正则表达式清除相同的数组(低效率)

  38. 用正则表达式清除相同的数组(高效率)

  39. 字符串反序

  40. 实现金额大写转换函数

  41. 实现base64解码

  42. 实现utf8解码

  1. 实现字符串长度截取

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // 实现字符串长度截取
    function cutstr(str, len) {
    var temp;
    var icount = 0;
    var patrn = /[^\x00-\xff]/;
    var strre = "";
    for (var i = 0; i < str.length; i++) {
    if (icount < len - 1) {
    temp = str.substr(i, 1);
    if (patrn.exec(temp) == null) {
    icount = icount + 1;
    } else {
    icount = icount + 2;
    }
    strre += temp
    } else {
    break
    }
    }
    return strre + "...";
    }
  2. 获取域名主机

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // 获取域名主机
    function getHost(url) {
    var host = "null";
    if (typeof url == "undefined" || null == url) {
    url = window.location.href;
    }
    var reg = /^\w+\:\/\/([^\/]*).*/;
    var match = url.match(reg);
    if (typeof match != "undefined" && null != match) {
    host = match[1];
    }
    return host;
    }
  3. 转义html标签

    Javascriptview raw
    1
    2
    3
    4
    // 转义html标签
    function HtmlEncode(text) {
    return text.replace(/&/g, '&amp').replace(/\"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
    }
  4. 还原html标签

    Javascriptview raw
    1
    2
    3
    4
    // 还原html标签
    function HtmlDecode(text) {
    return text.replace(/&amp;/g, '&').replace(/&quot;/g, '\"').replace(/&lt;/g, '<').replace(/&gt;/g, '>')
    }
  5. 时间日期格式转换

  6. 判断是否为数字类型

  7. 设置cookie值

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // 设置cookie值
    function setCookie(name, value, Hours) {
    var d = new Date();
    var offset = 8;
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
    var nd = utc + (3600000 * offset);
    var exp = new Date(nd);
    exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);
    document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"
    }
  8. 获取cookie值

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    // 获取cookie值
    function getCookie(name) {
    var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
    if (arr != null) return unescape(arr[2]);
    return null
    }
  9. 加入收藏夹

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // 加入收藏夹
    function AddFavorite(sURL, sTitle) {
    try {
    window.external.addFavorite(sURL, sTitle)
    } catch (e) {
    try {
    window.sidebar.addPanel(sTitle, sURL, "")
    } catch (e) {
    alert("加入收藏失败,请使用Ctrl+D进行添加")
    }
    }
    }
  10. 设为首页

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // 设为首页
    function setHomepage() {
    if (document.all) {
    document.body.style.behavior = 'url(#default#homepage)';
    document.body.setHomePage('http://***')
    } else if (window.sidebar) {
    if (window.netscape) {
    try {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
    } catch (e) {
    alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support 值该为true")
    }
    }
    var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
    prefs.setCharPref('browser.startup.homepage', 'http://***')
    }
    }
  11. 加载样式文件

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // 加载样式文件
    function LoadStyle(url) {
    try {
    document.createStyleSheet(url)
    } catch(e) {
    var cssLink = document.createElement('link');
    cssLink.rel = 'stylesheet';
    cssLink.type = 'text/css';
    cssLink.href = url;
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(cssLink)
    }
    }
  12. 返回按ID检索的元素对象

    Javascriptview raw
    1
    2
    3
    4
    // 返回按ID检索的元素对象
    function $(id) {
    return !id ? null : document.getElementById(id);
    }
  13. 元素显示的通用方法

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // 元素显示的通用方法
    function $(id) {
    return !id ? null : document.getElementById(id);
    }

    function display(id) {
    var obj = $(id);
    if (obj.style.visibility) {
    obj.style.visibility = obj.style.visibility == 'visible' ? 'hidden' : 'visible';
    } else {
    obj.style.display = obj.style.display == '' ? 'none' : '';
    }
    }
  14. 检验URL链接是否有效

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // 检验URL链接是否有效
    function getUrlState(URL) {
    var xmlhttp = new ActiveXObject("microsoft.xmlhttp");
    xmlhttp.Open("GET", URL, false);
    try {
    xmlhttp.Send();
    } catch (e) {} finally {
    var result = xmlhttp.responseText;
    if (result) {
    if (xmlhttp.Status == 200) {
    return (true);
    } else {
    return (false);
    }
    } else {
    return (false);
    }
    }
    }
  15. 格式化CSS样式代码

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // 格式化CSS样式代码
    function formatCss(s) { //格式化代码
    s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
    s = s.replace(/;\s*;/g, ";"); //清除连续分号
    s = s.replace(/\,[\s\.\#\d]*{/g, "{");
    s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2");
    s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2");
    s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2");
    return s;
    }
  16. 压缩CSS样式代码

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // 压缩CSS样式代码
    function compressCss(s) { //压缩代码
    s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //删除注释
    s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
    s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容错处理
    s = s.replace(/;\s*;/g, ";"); //清除连续分号
    s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白
    return (s == null) ? "" : s[1];
    }
  17. IP地址转成整型

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    // IP地址转成整型
    function _ip2int(ip) {
    var num = 0;
    ip = ip.split(".");
    num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);
    num = num >>> 0;
    return num;
    }
  18. 整型解析为IP地址

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // 整型解析为IP地址
    function _int2iP(num) {
    var str;
    var tt = new Array();
    tt[0] = (num >>> 24) >>> 0;
    tt[1] = ((num << 8) >>> 24) >>> 0;
    tt[2] = (num << 16) >>> 24;
    tt[3] = (num << 24) >>> 24;
    str = String(tt[0]) + "." + String(tt[1]) + "." + String(tt[2]) + "." + String(tt[3]);
    return str;
    }
  19. 实现checkbox全选与全不选

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // 实现checkbox全选与全不选
    function checkAll() {
    var selectall = document.getElementById("selectall");
    var allbox = document.getElementsByName("allbox");
    if (selectall.checked) {
    for (var i = 0; i < allbox.length; i++) {
    allbox[i].checked = true;
    }
    } else {
    for (var i = 0; i < allbox.length; i++) {
    allbox[i].checked = false;
    }
    }
    }
  20. 判断是否移动设备

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // 判断是否移动设备
    function isMobile(){
    if (typeof this._isMobile === 'boolean'){
    return this._isMobile;
    }
    var screenWidth = this.getScreenWidth();
    var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
    var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");
    if(!fixViewPortsExperiment){
    if(!this.isAppleMobileDevice()){
    screenWidth = screenWidth/window.devicePixelRatio;
    }
    }
    var isMobileScreenSize = screenWidth < 600;
    var isMobileUserAgent = false;
    this._isMobile = isMobileScreenSize && this.isTouchScreen();
    return this._isMobile;
    }
  21. 判断是否移动设备 userAgent 访问

    Javascriptview raw
    1
    2
    3
    4
    // 通过UserAgent判断是否移动设备
    function isMobileUserAgent() {
    return (/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()));
    }
  22. 判断是否苹果移动设备访问

    Javascriptview raw
    1
    2
    3
    4
    // 判断是否苹果移动设备访问
    function isAppleMobileDevice() {
    return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));
    }
  23. 判断是否安卓移动设备访问

    Javascriptview raw
    1
    2
    3
    4
    // 判断是否安卓移动设备访问
    function isAndroidMobileDevice() {
    return (/android/i.test(navigator.userAgent.toLowerCase()));
    }
  24. 判断是否在安卓上的谷歌浏览器

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // 判断是否在安卓上的谷歌浏览器
    function isChromeOnAndroid() {
    if (this.isAndroidMobileDevice()) {
    var userAgent = navigator.userAgent.toLowerCase();
    if ((/chrome/i.test(userAgent))) {
    var parts = userAgent.split('chrome/');

    var fullVersionString = parts[1].split(" ")[0];
    var versionString = fullVersionString.split('.')[0];
    var version = parseInt(versionString);

    if (version >= 27) {
    return true;
    }
    }
    }
    return false;
    }
  25. 完美判断是否为网址

    Javascriptview raw
    1
    2
    3
    4
    5
    // 判断是否为网址
    function isURL(strUrl) {
    var reg = /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;
    return (reg.test(strUrl));
    }
  26. 随机数时间戳

    Javascriptview raw
    1
    2
    3
    4
    5
    // 随机数时间戳
    function uniqueId() {
    var a = Math.random, b = parseInt;
    return Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a());
    }
  27. 确认是否键盘有效输入值

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // 确认是否键盘有效输入值
    function checkKey(iKey){
    if(iKey == 32 || iKey == 229){return true;}/*空格和异常*/
    if(iKey>47 && iKey < 58){return true;}/*数字*/
    if(iKey>64 && iKey < 91){return true;}/*字母*/
    if(iKey>95 && iKey < 108){return true;}/*数字键盘1*/
    if(iKey>108 && iKey < 112){return true;}/*数字键盘2*/
    if(iKey>185 && iKey < 193){return true;}/*符号1*/
    if(iKey>218 && iKey < 223){return true;}/*符号2*/
    return false;
    }
  28. 时间个性化输出功能

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    // 时间个性化输出功能
    /*
    1、< 60s, 显示为“刚刚”
    2、>= 1min && < 60 min, 显示与当前时间差“XX分钟前”
    3、>= 60min && < 1day, 显示与当前时间差“今天 XX:XX”
    4、>= 1day && < 1year, 显示日期“XX月XX日 XX:XX”
    5、>= 1year, 显示具体日期“XXXX年XX月XX日 XX:XX”
    */
    function timeFormat(time) {
    var date = new Date(time),
    curDate = new Date(),
    year = date.getFullYear(),
    month = date.getMonth() + 1,
    day = date.getDate(),
    hour = date.getHours(),
    minute = date.getMinutes(),
    curYear = curDate.getFullYear(),
    curHour = curDate.getHours(),
    timeStr;

    if (year < curYear) {
    timeStr = year + '年' + month + '月' + day + '日 ' + hour + ':' + minute;
    } else {
    var pastTime = curDate - date,
    pastH = pastTime / 3600000;

    if (pastH > curHour) {
    timeStr = month + '月' + day + '日 ' + hour + ':' + minute;
    } else if (pastH >= 1) {
    timeStr = '今天 ' + hour + ':' + minute + '分';
    } else {
    var pastM = curDate.getMinutes() - minute;
    if (pastM > 1) {
    timeStr = pastM + '分钟前';
    } else {
    timeStr = '刚刚';
    }
    }
    }
    return timeStr;
    }
  29. 获取单选按钮的值

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // 获取单选按钮的值
    function get_radio_value(field) {
    if (field && field.length) {
    for (var i = 0; i < field.length; i++) {
    if (field[i].checked) {
    return field[i].value;
    }
    }
    } else {
    return ;
    }
    }
  30. 获取复选框的值

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // 获取复选框的值
    function get_checkbox_value(field) {
    if (field && field.length) {
    for (var i = 0; i < field.length; i++) {
    if (field[i].checked && !field[i].disabled) {
    return field[i].value;
    }
    }
    } else {
    return;
    }
    }
  31. 判断是否为邮箱

    Javascriptview raw
    1
    2
    3
    4
    5
    // 判断是否为邮箱
    function isEmail(str) {
    var re = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
    return (re.test(str));
    }
  32. 判断字符串是否大于规定的长度

    Javascriptview raw
    1
    2
    3
    4
    // 判断字符串是否大于规定的长度
    function isValidLength(chars, len) {
    return (chars.length > len);
    }
  33. 判断字符串是否为小数

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    // 判断字符串是否为小数
    function isValidDecimal(chars) {
    var re = /^\d*\.?\d{1,2}$/;
    if (chars.match(re) == null)
    return false;
    else
    return true;
    }
  34. 判断字符串是否为整数

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    // 判断字符串是否为整数
    function isNumber(chars) {
    var re = /^\d*$/;
    if (chars.match(re) == null)
    return false;
    else
    return true;
    }
  35. 判断字符串是否为浮点数

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // 判断字符串是否为浮点数
    function isFloat( str ) {
    for(i=0;i<str.length;i++) {
    if ((str.charAt(i)<"0" || str.charAt(i)>"9")&& str.charAt(i) != '.'){
    return false;
    }
    }
    return true;
    }
  36. 判断字符串是否邮政编码

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    // 判断字符串是否邮政编码
    function isValidPost(chars) {
    var re = /^\d{6}$/;
    if (chars.match(re) == null)
    return false;
    else
    return true;
    }
  37. 用正则表达式清除相同的数组(低效率)

    Javascriptview raw
    1
    2
    3
    4
    // 用正则表达式清除相同的数组(低效率)
    Array.prototype.unique = function() {
    return this.reverse().join(",").match(/([^,]+)(?!.*\1)/ig).reverse();
    };
  38. 用正则表达式清除相同的数组(高效率)

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // 用正则表达式清除相同的数组(高效率)
    String.prototype.unique = function () {
    var x = this.split(/[\r\n]+/);
    var y = '';
    for (var i = 0; i < x.length; i++) {
    if (!new RegExp("^" + x[i].replace(/([^\w])/ig, "\\$1") + "$", "igm").test(y)) {
    y += x[i] + "\r\n"
    }
    }
    return y
    }
  39. 字符串反序

    Javascriptview raw
    1
    2
    3
    4
    // 字符串反序
    function IsReverse(text) {
    return text.split('').reverse().join('');
    }
  40. 实现金额大写转换函数

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    // 实现金额大写转换函数
    function transformMoney(tranvalue) {
    try {
    var i = 1;
    var dw2 = new Array("", "万", "亿"); //大单位
    var dw1 = new Array("拾", "佰", "仟"); //小单位
    var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //整数部分用
    //以下是小写转换成大写显示在合计大写的文本框中
    //分离整数与小数
    var source = splits(tranvalue);
    var num = source[0];
    var dig = source[1];
    //转换整数部分
    var k1 = 0; //计小单位
    var k2 = 0; //计大单位
    var sum = 0;
    var str = "";
    var len = source[0].length; //整数的长度
    for (i = 1; i <= len; i++) {
    var n = source[0].charAt(len - i); //取得某个位数上的数字
    var bn = 0;
    if (len - i - 1 >= 0) {
    bn = source[0].charAt(len - i - 1); //取得某个位数前一位上的数字
    }
    sum = sum + Number(n);
    if (sum != 0) {
    str = dw[Number(n)].concat(str); //取得该数字对应的大写数字,并插入到str字符串的前面
    if (n == '0') sum = 0;
    }
    if (len - i - 1 >= 0) { //在数字范围内
    if (k1 != 3) { //加小单位
    if (bn != 0) {
    str = dw1[k1].concat(str);
    }
    k1++;
    } else { //不加小单位,加大单位
    k1 = 0;
    var temp = str.charAt(0);
    if (temp == "万" || temp == "亿") //若大单位前没有数字则舍去大单位
    str = str.substr(1, str.length - 1);
    str = dw2[k2].concat(str);
    sum = 0;
    }
    }
    if (k1 == 3) //小单位到千则大单位进一
    {
    k2++;
    }
    }
    //转换小数部分
    var strdig = "";
    if (dig != "") {
    var n = dig.charAt(0);
    if (n != 0) {
    strdig += dw[Number(n)] + "角"; //加数字
    }
    var n = dig.charAt(1);
    if (n != 0) {
    strdig += dw[Number(n)] + "分"; //加数字
    }
    }
    str += "元" + strdig;
    } catch (e) {
    return "0元";
    }
    return str;
    }
    //拆分整数与小数
    function splits(tranvalue) {
    var value = new Array('', '');
    temp = tranvalue.split(".");
    for (var i = 0; i < temp.length; i++) {
    value[i] = temp[i];
    }
    return value;
    }
  41. 实现base64解码

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    // base64解码
    function base64_decode(data) {
    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
    ac = 0,
    dec = "",
    tmp_arr = [];
    if (!data) {
    return data;
    }
    data += '';
    do {
    h1 = b64.indexOf(data.charAt(i++));
    h2 = b64.indexOf(data.charAt(i++));
    h3 = b64.indexOf(data.charAt(i++));
    h4 = b64.indexOf(data.charAt(i++));
    bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
    o1 = bits >> 16 & 0xff;
    o2 = bits >> 8 & 0xff;
    o3 = bits & 0xff;
    if (h3 == 64) {
    tmp_arr[ac++] = String.fromCharCode(o1);
    } else if (h4 == 64) {
    tmp_arr[ac++] = String.fromCharCode(o1, o2);
    } else {
    tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
    }
    } while (i < data.length);
    dec = tmp_arr.join('');
    dec = utf8_decode(dec);
    return dec;
    }
  42. 实现utf8解码

    Javascriptview raw
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // utf8解码
    function utf8_decode(str_data){
    var tmp_arr = [],i = 0,ac = 0,c1 = 0,c2 = 0,c3 = 0;str_data += '';
    while (i < str_data.length) {
    c1 = str_data.charCodeAt(i);
    if (c1 < 128) {
    tmp_arr[ac++] = String.fromCharCode(c1);
    i++;
    } else if (c1 > 191 && c1 < 224) {
    c2 = str_data.charCodeAt(i + 1);
    tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
    i += 2;
    } else {
    c2 = str_data.charCodeAt(i + 1);
    c3 = str_data.charCodeAt(i + 2);
    tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
    i += 3;
    }
    }
    return tmp_arr.join('');
    }

本文链接:


评论内容还在加载中。。。
如无法加载,请将域名 disqus.com 和 disquscdn.com 加入到你的代理规则中