CSS选择器的浏览器兼容

2014-02-28 · 489 chars · 3 min read

测试环境:HTML5 DOCTYPE,Chrome 33.0.1750.117 m,FireFox 27.0.1,Internet Explorer 11.0.9600.16428IS,IETester v0.4.11。结果直接见下表:

JavaScript 判断密码强度

2014-02-25 · 377 chars · 2 min read

先上 Demo,下面是代码:

;(function ($) {
  /*
   * 0-弱
   * 1-中
   * 2-强
   */

  var pswstrength = function () {}

  pswstrength.prototype = {
    constructor: pswstrength,
    //Unicode 编码区分数字,字母,特殊字符
    CharMode: function (iN) {
      if (iN >= 48 && iN <= 57)
        //数字(U+0030 - U+0039)
        return 1 //二进制是0001
      if (iN >= 65 && iN <= 90)
        //大写字母(U+0041 - U+005A)
        return 2 //二进制是0010
      if (iN >= 97 && iN <= 122)
        //小写字母(U+0061 - U+007A)
        return 4
      //二进制是0100
      //其他算特殊字符
      else return 8 //二进制是1000
    },
    bitTotal: function (num) {
      modes = 0
      for (i = 0; i < 4; i++) {
        if (num & 1)
          //num不是0的话
          modes++ //复杂度+1
        num >>>= 1 //num右移1位
      }
      return modes
    },
    check: function (sPW) {
      if (sPW.length < 7)
        //小于7位,直接“弱”
        return 0
      Modes = 0
      for (i = 0; i < sPW.length; i++) {
        //密码的每一位执行“位运算 OR”
        Modes |= this.CharMode(sPW.charCodeAt(i))
      }
      return this.bitTotal(Modes)
    },
  }

  if (typeof $.pswstrength == 'undefined' || $.pswstrength == null) {
    $.pswstrength = new pswstrength()
  }
})(jQuery)

原理主要利用二进制数,数字标记为 1,大写字母标记为 2,小写字母标记为 4,特殊字符标记为 8,他们的二进制数如下表:

  • 1: 0001
  • 2: 0010
  • 4: 0100
  • 8: 1000

位运算 OR 计算密码的每一位,得到一个四位的二进制数,从而得出密码强度。

如果不了解位运算的话,可以看看 W3School 的教程

JavaScript判断浏览器类型及版本(新增IE11)

2014-02-22 · 173 chars · 1 min read

参考了李战大神的文章,在其基础上新增了 IE11 的支持(IE11 修改了 User-agent 字符串),直接上代码:

<script type="text/javascript">
  $(function () {
    var Sys = {}
    var ua = navigator.userAgent.toLowerCase()
    var s
    ;(s = ua.match(/rv:([\d.]+)\) like gecko/))
      ? (Sys.ie = s[1])
      : (s = ua.match(/msie ([\d.]+)/))
      ? (Sys.ie = s[1])
      : (s = ua.match(/firefox\/([\d.]+)/))
      ? (Sys.firefox = s[1])
      : (s = ua.match(/chrome\/([\d.]+)/))
      ? (Sys.chrome = s[1])
      : (s = ua.match(/opera.([\d.]+)/))
      ? (Sys.opera = s[1])
      : (s = ua.match(/version\/([\d.]+).*safari/))
      ? (Sys.safari = s[1])
      : 0

    if (Sys.ie) document.write('IE: ' + Sys.ie)
    if (Sys.firefox) document.write('Firefox: ' + Sys.firefox)
    if (Sys.chrome) document.write('Chrome: ' + Sys.chrome)
    if (Sys.opera) document.write('Opera: ' + Sys.opera)
    if (Sys.safari) document.write('Safari: ' + Sys.safari)
  })
</script>

实际效果可以查看在线演示

IE11的坎坷升级路

2014-02-21 · 209 chars · 2 min read

做前端的少不了和浏览器打交道,昨天写完《CSS hack 总结》之后,发现 demo 在 IE11 下有问题,IE11 的 user-agent 变了,所以今天把电脑上的 IE10 升级了一下,没想到遇到不少问题。

安装的过程就不说了,直接说问题吧。打开 IE11,显示空白一片,输入任何网址都无效,还是一片空白

自动定时备份VPS – 如何搭建个人网站

2014-02-09 · 1,005 chars · 6 min read

如何搭建个人网站系列:

建设网站,备份是非常重要的工作,再好的 VPS 也无法 100%保证数据的安全性(何况我用的这么便宜),下面介绍下备份网站主程序和使用 dropbox 备份网站附件、数据库。