Entries tagged with “javascript”.


前言:

密码强度是一个很普遍的功能,比较简单,主要是怎么制定这个强度规则。现在需要升级密码强度的验证,以前的验证比较简单,现在已经不能满足需求了,现在需要可灵活变化并有多级别可配置选择的一个密码强度验证,所以就设计了下面这个东东。在设计前也参考了下比较成熟的强度规则,大同小异,不外乎都采取了打分的机制来控制密码强度规则,这样可配置性高,灵活。本来想直接拿来用的,但是发现都比较旧,有些不太适宜公司开发的需求,可能这个东西比较简单吧,所以也没什么人去更新和写新的代码,所以还是自己动手设计了规则和写了代码。

实现:

原理:

采用打分的机制,打分分为3类(基础分、加分、减分),先求出基础分,在计算加分的部分,最后减去要扣除的分数就为最终总分。

规则:

密码可输入类型(字符,字母大写,字母小写,特殊字符)。

基础分为,密码长度,一个长度为一分,大于18个字符都为18分;密码里面包含一种可输入类型,基础分加4分。

加分为,一种密码可输入类型的总数量大于等于2个,加分2分,如果总数量大于等于5,加分4分。

减分为,如果有连续重复的单个种类字符,则重复一次减1分。

总分50分。

0~10分:不合格(弱)

11~20分:一般

21~30分:中

31~40分:强

41~50分:安全

*分数范围可以自由调整和搭配,其实整个打分规则都可以根据需要修改

code:

function passwordGrade(pwd) {
var score = 0;
var regexArr = ['[0-9]‘, ‘[a-z]‘, ‘[A-Z]‘, ‘[W_]‘];
var repeatCount = 0;
var prevChar = ”;

//check length
var len = pwd.length;
score += len > 18 ? 18 : len;

//check type
for (var i = 0, num = regexArr.length; i < num; i++) { if (eval(‘/’ + regexArr[i] + ‘/’).test(pwd)) score += 4; }

//bonus point
for (var i = 0, num = regexArr.length; i < num; i++) {
if (pwd.match(eval(‘/’ + regexArr[i] + ‘/g’)) && pwd.match(eval(‘/’ + regexArr[i] + ‘/g’)).length >= 2) score += 2;
if (pwd.match(eval(‘/’ + regexArr[i] + ‘/g’)) && pwd.match(eval(‘/’ + regexArr[i] + ‘/g’)).length >= 5) score += 2;
}

//deduction
for (var i = 0, num = pwd.length; i < num; i++) {
if (pwd.charAt(i) == prevChar) repeatCount++;
else prevChar = pwd.charAt(i);
}
score -= repeatCount * 1;

return score;

}

打分例子:

1111=7分
1@dA=20分
111111=9分
abcdef1=19分
abcd12=18分
abc123=18分
ab123A=22分
aA12j@=26分
aasdfkjjsjjj=16分
111111111dsfskjjkjeh=25分
1111dsfskjjkjeh=25分
1231kb#4ktSF!T@s^j#hkWH=50分
skhk3293ks=24分
sfh#4hHdk=29分
bure12#sk=27分
a@s@dk23=26分
bruceLi@09kt=34分
ce@Li1=24分

[source]

myform.button1.disabled=true;
myform.button1.disabled=false;

Jacob Seidelin正在做一件很牛的事情,而且很有趣,这就是一个只用了14k javascript 写的超级玛丽程序! 

这个程序所有的内容都只占用很小的空间,包含在一个javascript文件中,而且没有一个外部图片文件,所有的图像信息都是用javascript 渲染canvas元素或者老式div生成策略(for IE)而成的。sprites存储在定制编码字符串中,只能存储4种颜色,但是每个sprite只占用40-60 bytes,大大节省了存储空间。

同时MIDI音乐用base64编码数据嵌入,URI定位,但没有支持IE的音乐,其他浏览器或多或少有点小问题,但是这是一件很好的作品,不是吗?

去看看:

Regular version: no music or with music

Double size: no music or with music

来自:ajaxian.com

每个 web 设计者都希望设计出富有创造性的导航菜单。现在为您呈现 13 个希奇的 Javascript CSS 菜单,你可以通过修改来设计出符合自己意愿的个性菜单。

1) 性感滑动菜单(Sexy Sliding Menu) - 一种由 Mootools 制作,另外一种使用 scrip.aculo.us 制作的。
\"sexy-menu.gif\"
演示:Mootols 版本
演示:Script.aculo.us 版本

2) FastFind Menu Script - 此菜单使用 jQuery 库制作,基于动态 Ajax 相应,嵌套式菜单。
\"fastfind.gif\"
演示: FastFind Menu

3) Webber 2.0 Dock Menu - 类似 Apple Mac 系统中船坞类型的导航菜单。
\"dockmenu.gif\"
演示: Webber 2.0 Dock Menu

4) Phatfusion – 图片菜单 - 采用 Javascript的图片菜单,单击进行选择或者关闭。
\"phatfusion.jpg\"
演示: Phatfusion – Image Menu
演示: Mootools 版本(采用 XML 分析器)

5)可拖拽排序的树状菜单
\"tree.gif\"
演示:http://extjs.com/deploy/dev/examples/tree/reorder.html

6)自定义菜单事件 - 采用 Yahoo!UI 框架搭建,由 Think Vitamin 团队制作。
\"custom.gif\"
演示:http://www.thinkvitamin.com/misc/yui-demos/demo-10.html

7) 右键菜单功能 - 采用Yahoo!UI框架制作。
\"custom.jpg\"
演示:http://yura.thinkweb2.com/scripting/contextMenu/

8) LavaLamp jQuery 滑动菜单 - 采用 jQuery 框架构建。
\"lavalamp.gif\"
演示:LavaLamp jQuery 滑动菜单
演示: Mootools Fancy Menu

9) Slashdot 菜单 - 著名科技网站 Slashdot 样式的菜单效果。
\"9.gif\"
演示:http://www.dynamicdrive.com/dynamicindex1/slashdot.htm

10) Mootools 菜单
\"10.jpg\"
演示:http://www.artviper.eu/mootoolsmenu/

11) CSS Dock Menu - 真正仿 Mac 系统的 Dock 菜单。
\"11.gif\"
演示:http://www.ndesign-studio.com/blog/mac/css-dock-menu

12) jQuery插件:Sliding Menu
\"12.gif\"
演示:http://www.getintothis.com/pub/projects/rb_menu/

13) 可收缩菜单
\"13.gif\"
演示:http://www.456bereastreet.com/lab/accessible-expanding-collapsing-menu/