Category Archives: javascript

人人网FED团队 招聘前端工程师

前端工程师(javascript) 工作地点: 北京 性别:不限 要求: 精通HTML DOM对象的Javascript编程,熟悉对象化Javascript编程 有使用js框架经验,了解 不同浏览器之间的差异,写出的代码具有良好的兼容性 掌握XHTML、CSS, 对W3C有较深理解 了解web后端开发,熟悉 至少一门后端语言 熟练阅读英文技术文档 前端工程师(xhtml/css方向) 工作地点: 北京 性别:不限 要求: 精通各种Web前端 技术,包括XHTML/XML/CSS,了解不同浏览器之间的差异,写出的代码具有良好的兼容性(至少兼容3种以上浏览器内核) 深刻理解Web标 准,对可用性、可访问性等相关知识有实际的了解和实践经验 对各种前端技术有一 定了解和关注,并对前端开发工作有持续热情 熟练阅读英文技术文 档 如果你有js, flash等相关技术的开发经验或参与过大型web应用的开发,那么你在应聘时会占有很大优势 申请职位请发邮件到:bo.hu^_^renren-inc.com(^_^换成@) QQ: 287759234

Nodejs简单异步操作管理器

我想我每次开始写博客的第一句话都会是:好久没有写博客了,写一个吧 – -! 最近写nodejs比较多,刚开始的时候碰到的异步的操作比较少,因为想做的东西比较简单,一查api有同步的,为了省事就直接用同步的搞了,慢慢发现这不是个事呀,好好的异步特性不用,非得用同步的,真囧,并且很多东西木有同步的api的。 好!写异步的,慢慢的出现了这种代码。。。 1 2 3 4 5 6 7 8 9 10 11 12 13 mysql.query(’xxxx’).on(’success’, function(){ mysql.query(’xxxx’).on(’success’, function(){ mysql.query(’xxxx’).on(’success’, function(){ mysql.query(’xxxx’).on(’success’, function(){ mysql.query(’xxxx’).on(’success’, function(){ mysql.query(’xxxx’).on(’success’, function(){ //let’s say fuck }); }); }); }); }); }); 恩,你也看到了,这样下去代码多丑,会像老太太的裹脚布一样了,于是就产生下面的异步操作管理器,小巧精致,嘿嘿,绝对够用,代码的事,用代码说话吧,直接亮代码,如码: TODO:不够全面,比如说出错的就没有处理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [...]

写了一个咆哮体生成器

恩,RT,网页版,JS的,右键看一下源码就知道怎么回事了,纯属娱乐 http://jser.me/demos/js/pxt.html

字符串转为json的几种方式对比

前后端交互越来越常用的数据格式是json而非的xml,最常见的是直接eval,现在大部分浏览器已经内置JSON对象。 常见的四种转换字符串为json格式的方式: eval (简单,不存在浏览器性能,有安全隐患) 内建JSON.parse (有浏览器不支持) douglascrockford 的  json2.js (安全上有一定的保证,浏览器支持2的时候使用2) json-sans-eval.js(特色是安全,速度不是很快) 看这里,数据是看新浪微博时随便找的一段,在各个浏览器中看了一下,100次的时候基本上都是内置的最快,1000次的时候eval快,这个很不解,另外发现了opera的速度是最快的,在我的电脑上100次只用了3ms,真NB呀。综合看来,使用json2.js挺不错的,当然,如果你的所有数据都是能保证安全的,直接用eval吧~

XMLHttpRequest发送put,delete请求

记得之前有同事问过,能不能用js实现http的put和delete请求。最近看了点REST相关的东西,对HTTP协议的构造也有一些新的认识,原来很多请求已经背离了最早设计HTTP协议的初衷,get/post/put/delete分别对应着查/改/增/删,这很像数据库里的select/ update/insert/delete,感觉HTTP协议当初设计的时候是参考了数据库的操作(RFC最初于1969年制定,但是包含http 1.1的规范 RFC 2616于1996年才制定的,关系数据库是1970年提出的理论,具体是个神马关系,不太好说),我们几乎所有的操作都是get和post,put和delete用得非常少,可能与form目前只能使用get和post有关,html5规范中据说有想实现form的put和delete,但是最后放弃了,不知何故。 先放几个与REST相关的链接,有些我还没有消化透: http://www.w3.org/QA/2008/10/understanding-http-put.html http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html http://hi.baidu.com/msingle/blog/item/410517229971d1b54623e805.html http://q.sohu.com/forum/5/topic/3464168 那么到底能不能用js实现put和delete呢? 大家都知道XMLHttpRequest对象的open方法第一个参数就是method,有多少人用过除了”GET”和”POST”之外的参数呢?试验了一个,发现了好玩的,哈哈,例子猛击这里,请在不同的浏览器中测试,服务器返回的是请求的method。 在IE6,7,8下,自己乱定义的method jser.me光荣牺牲,报错了,但是put,delete都很正常,并且请求过一次的post,居然也成get了, 在FF,chrome下不仅put,delete很正常,jser.me这个自定义的方法也给力的完成了 小试验证明put和delete是完全可以用XMLHttpRequest来实现的~~~ PS:在本机(apache)测试的时候jser.me是很完美的完成了,在服务器上到nginx时被拦了,看配置也没找到哪出问题了,囧

小例子一个

好久没写东东了,有点占坑不拉屎。。。 :( 1 2 3 4 a(1); //alert( n ) function a( n ){ alert( n ); } 1 2 3 4 a(1); //TypeError a is not a function var a = function ( n ){ alert( n ); } 解释: 两种写法及它们的区别本质在于js引擎在解析时,会先预读function a()这种,而不会预读var a = function这种。 看另一个小应用 一般黑客做xss测试的时候会alert, :),那么我们监控一下alert函数 错误: 1 2 3 4 5 [...]

高质量的浏览器图标资源

曾经我也在不停的寻找,于是我找到了,哈哈,上图 大图太大,请直接点击查看 512 * 512 256 x 256 128 x 128 64 x 64 32 x 32 16 x 16 转帖来自:High-res browser icons

js中计算中文长度方法

由于javascript是unicode编码的,所有的字符对于它来说一个就是一个,但是后台程序不是,通常在后台程序中一个中文是占两个字节的,这就导致了前后端校验长度不一致,这个问题可以通过正则来解决。 1 2 3 function getRealLen( str ) { return str.replace(/[^\x00-\xff]/g, ‘__’).length; //这个把所有双字节的都给匹配进去了 } 附赠另一小则技巧: 有时候为了美观,不影响布局和界面,会以一些文案进行截字,但是中文的宽度和英文的宽度不一样,如果按照英文标准来截中文的,或者按中文标准截英文的,显然会忽长忽短,特别是昵称这类容易既有中文又有英文的东西,同样我们可以用上面的思路 1 2 3 4 5 6 function beautySub( str, len) { var reg = /[\u4e00-\u9fa5]/g, //专业匹配中文 slice = str.substring(0,len), realen = len – ( ~~( slice.match(reg) && slice.match(reg).length ) ); return slice.substring(0, realen ? realen : 1); } 这里我们认为一个中文字符是两个英文字符的宽度,如果你是完美主义者,应该想到j和w,m的宽度是不一样的,w和m以及大写的部分字母和中文的宽度是一致的,这个函数的正则还有相当大的改进空间,同时也可以指定截字的起始位置。

IE下图片onload事件无效

在做照片故事模式的时候才发现的这个bug,其实这是一个很常见的问题,只是之前对图片的处理太少,没有碰到过。 故事模式实现是只加载当前浏览的照片和它下面的两张照片,加载照片的时候才会加载和渲染评论区,图片没有加载前会用一个一象素的图片占位,并用一个loading类将显示出一个loading背景图,判断在可视区的时候替换成真正的图片,图片加载成功后删除loading类。 问题出在最后面,测试的时候发现在IE下loading类无法删除,当时代码如下: 1 2 3 4 5 img.src = _src; img.src = _src; img.onload = function(){ _con.delClass(’loading’); } 网上找了一番,onload和定义src的语句应该换一下顺序,IE从缓存中取图片,onload根本不触发,opera也有这个毛病,正确代码修改如下 1 2 3 4 img.onload = function(){ _con.delClass(’loading’); }; img.src = _src; 立即就正常了

用vim写javascript

最早的时候我用Dreamweaver写js,或者说不叫写,叫拖放式编程 : ) ,再后来用了一段时间的editplus,发现editplus效率太低了,自动提示,自动完成太弱了,就改用aptana,速度不错,可是一打开一个包含很多文件的工程,卡得不行,这大概是eclipse的通病,最终,在华大师的感召下,转到了ubuntu,彻底用了vim,写点我的心得体会,方便后来人。 首先语法高亮,这个必须的。vim自带的那个javascript的文件太弱了,到这里下载,完了直接扔到vim的syntax目录下,然后,在vimrc文件里写上 1 2 let b:javascript_fold=1 "开启折叠 let javascript_enable_domhtmlcss=1 "启用对dom html css高亮支持 然后呢是语法检查,少写分号,会导致压缩脚本时出问题的,object的属性多写逗号会在IE下报错的,这些可能是手误导致的问题,需要有一个工具提醒我们,下载它,接下来分别说一下windows下和linux下的配置。 linux: 下载源码包,解压 1 2 3 4 5 $ cd jsl $ make -f Makefile.ref all $ cd Linux_All_DBG.OBJ/ $ sudo cp jsl jscpucfg /usr/local/bin/ $ jsl -help:conf > ~/.jsl.conf #生成配置文件一般我喜欢把它放到个人目录下 window: 下载window的包,解压,随便放一个目录,我放在d:\runtimes\jsl\下面,然后把这个路径加到系统PATH中,尽管网上很多说把它放到vim目录下,然后用$VIM去写路径比较好,可是如果你需要在命令行下别的地方用到它,把它加到系统PATH中去也挺划算的。 上面的步骤只是搞jsl的环境,下面才是VIM的配置,下载它,然后扔到vim目录下的plugin中去。 linux下修改 vimrc文件(有同学反应不好使,已经改了) 1 2 3 let g:jslint_command = [...]