随笔分类 -  js

摘要:1、$.when(ajax).done(function(data)});2、$.ajax().done(function(data){});1中的data被封装进一个对象[data, "success", aboutData]data为返回的数据“success”为返回的信息状态,表示成功或失败aboutData为数据相关的信息2中只包含data信息,不包含状态和相关信息 阅读全文
posted @ 2013-11-19 23:28 charling 阅读(639) 评论(0) 推荐(0) 编辑
摘要:1、取得当地时间与GMT时间的时间差 (new Date()).getTimezoneOffset() //单位为分钟2、GMT时间加上与当地时间的时间差 (new Date(GMTTime)) + (new Date()).getTimezoneOffset() * 600003、获得当地时间的毫秒数之后,转换为Date对象,之后调用Date对象的相关方法获取需要的数据。 阅读全文
posted @ 2013-11-19 23:19 charling 阅读(848) 评论(0) 推荐(0) 编辑
摘要:window.postMessage1、浏览器兼容情况:IE8+、chrome、firefox等较新浏览器都至此。2、使用方法: a、otherWindow.postMessage( message, targetOrigin); otherWindow iframe属性中的对象或者window.open打开的窗口 message 要发送的信息 targetOrigin 限定消息的发送范围,如果不限制,使用“*” b、监听message事件的触发 $(window).on("message", function(event){ aler... 阅读全文
posted @ 2013-11-18 21:45 charling 阅读(434) 评论(0) 推荐(0) 编辑
摘要:模板的处理步骤:1、将模块的html、css、js封装进一个json格式的文件。例如{"html":"", "style":"", "script":""}。或者直接将style字段的内容直接内嵌到html字段中。2、将该文件部署到服务器的某个静态资源文件夹中。3、绑定事件触发ajax请求,url指定到服务器上对应的静态资源文件。4、在返回的数据中,取出html和style插入页面DOM5、在返回的数据中,出去script,执行globalEval。注意点:1、js需要包裹在 阅读全文
posted @ 2013-11-18 21:34 charling 阅读(349) 评论(0) 推荐(0) 编辑
摘要:1、有没有可能对线上报错进行实时监控,只要线上报错出现就会以邮件的形式发出来。2、有没有可能将每个模块和开发者联系起来,只要报错就直接报给开发者 阅读全文
posted @ 2013-11-11 23:33 charling 阅读(252) 评论(0) 推荐(0) 编辑
摘要:浏览器基本上包括如下几个组件1、HTML、XML、CSS、JavsScript解析器2、Layout3、文字和图形渲染4、图像解码5、GPU交互6、网络访问7、硬件加速 阅读全文
posted @ 2013-11-11 23:23 charling 阅读(238) 评论(0) 推荐(0) 编辑
摘要:监控图片加载可以采用$(".some-img").load(function(){ alert("loaded");});但是图片默认是读缓存的,第一次加载可以监控到,但之后的加载就无法监控到了。解决方法:1、可以为图片加时间戳,每次都去请求图片,但这显示不是一个好的做法。2、将之前的代码嵌入some-img标签的前面,避免图片load之后才为其绑定load事件。 阅读全文
posted @ 2013-11-11 09:27 charling 阅读(473) 评论(0) 推荐(0) 编辑
摘要:当实现轮播时,如果几张图片依次摆放。则从1直接切换到5的时候,会经过2-3-4的切换,让用户头昏眼花。两种解决的方法:1、把图片放入dom中,每次点击切换时,都把需要的图片从DOM中取出再放到当前图片的后面。2、把图片存放在js的数组中,每次点击切换则从数组中取出需要的图片并插入DOM,切换完成之后然后把当前图片放入数组。两种方案都不需要重复加载图片。第二种方案的好处在于DOM中只存在两张图片,比较整洁。 阅读全文
posted @ 2013-11-10 22:17 charling 阅读(283) 评论(0) 推荐(0) 编辑
摘要:1、判断某元素上是否绑定了某种类型的事件 var $events = $("#foo").data("events"); if( $events && $events["click"] ){ doSomething();}2、如何验证某个元素是否为空 方法一if (! $('#keks').html()) { //什么都没有找到;} 方法二if ($('#keks').is(":empty")) { //什么都没有找到;}3、如何在jQuery对象中找出某个元素的索引 阅读全文
posted @ 2013-11-10 21:11 charling 阅读(141) 评论(0) 推荐(0) 编辑
摘要:setTimeout(function(){alert(1);}, 1000);在使用setTimeout、setInterval的时候,会传一个时间来控制代码的执行时机。在经过了设置的时间段后,代码开始执行。这看上去很像是在异步执行。但是,如果在执行队列中之前的代码执行了超过设置的时间时,例如function test(){ setTimeout(function(){alert(1);}, 1000); while(true){}}此时,由于while执行的时间一定会超过1s,所以alert并不会按照预期在1s之后出现。 阅读全文
posted @ 2013-11-10 18:05 charling 阅读(225) 评论(0) 推荐(0) 编辑
摘要:范例:function C (){ this.a = 1; return { b : 2 }; } var c = new C(); alert(c.a); //undefined当构造函数使用return返回对象时,使用new操作符产生的对象并不是一个包含属性a的对象,而是return回来的对象。这种情况只发生在构造函数返回对象时,如果使用reuturn返回的是其它非对象类型的值,将会正常返回包含属性a的对象。 阅读全文
posted @ 2013-11-10 17:31 charling 阅读(193) 评论(0) 推荐(0) 编辑
摘要:1、回归历史源代码会诱使程序员重新产生更多的障碍集群。逻辑性差的冗余句法令人无法理解!然而,如果它没有中断,请不要去修复。2、如果使用过多的if else,那这段代码一定是不合逻辑的。3、接到项目直接开始写代码容易走入误区,写之前多思考,多调研反而会节省时间4、stackoverflow是个不错的寻求问题答案的地方。5、陷入僵局时,离开电脑、离开项目休息半小时 阅读全文
posted @ 2013-11-10 17:14 charling 阅读(99) 评论(0) 推荐(0) 编辑
摘要:1、stop([stopAll], [gotoEnd])方法有两个参数(当然可以不传或直传一个),其中stopAll的意思是清除之后的所有动画。gotoEnd的意思是,执行完当前动画。2、stopAll == true时,停止队列中的所有动画, stopAll ==false时,只停止队列中的当前动画,后续动画继续执行。3、gotoEnd == true时,立即跳到当前动画的末尾, gotoEnd ==false时,停在当前状态。且gotoEnd只有在设置了stopAll的时候才起作用4、在项目中,如果不进行动画队列清理,就会产生动画积累的问题。因此在写入动画时,最好先清除队列中的重复动画。 阅读全文
posted @ 2013-11-08 09:19 charling 阅读(2822) 评论(0) 推荐(0) 编辑
摘要:1、$.queue或$("elem").queue()是往队列里面添加可执行方法的方法,这个队列在jQuery中默认我fx。2、可以使用queue方法设置队列名称$("cl", arr),其中cl为队列名称,arr为放入这个队列的可执行方法的数组。3、当想要执行这个队列中的方法时,使用$("elem").dequeue(),此时会执行队列中的第一个方法。4、当想要清空队列时,可以使用$("elem").queue("cl", [])。 阅读全文
posted @ 2013-11-07 22:00 charling 阅读(331) 评论(0) 推荐(0) 编辑
摘要:1、设置display为none的元素,它的背景图依然会被下载。所以最好是等到该元素需要显示时才给他加上相应的有背景图的class。2、css中虽然ID选择器的优先级比较高,效率也比较高,但灵活性差,由于权重太高,导致私有化。相比而言,class的复用性高。3、书写css时,尽量不要为了提高优先级而在class前面加标签,这与使用jQuery选择器时想反。4、class起名时,尽量将模块名作为前缀,防止命名冲突。5、缓存对象的多级查询,否则每次查询性能较差。6、动画队列的问题。使用stop(true,true)不好,应该再源头上清除动画,使用queue的方法,该方法需要深入了解下。 阅读全文
posted @ 2013-11-07 09:08 charling 阅读(305) 评论(0) 推荐(0) 编辑
摘要:1、该方法在jQuery1.5开始被引入。2、用法测试 a、var url1 = "/resource/ar/hometab/index_tab_games.json", url2 = "/resource/ar/hometab/index_tab_image.json", ajax1 = $.ajax( { url : url1 } ), ajax2 = $.ajax( { url : url2 } ); $.when(ajax1, ajax2).done(function(){ ... 阅读全文
posted @ 2013-11-06 22:02 charling 阅读(21238) 评论(1) 推荐(1) 编辑
摘要:对于jQuery的lazyload插件,一直是我比较想了解的部分。下面是看别人的文章的笔记:1、如何使用 做一个1*1像素的占位图片 将图片src指向占位图片 图片原地址放入data-original属性 为图片设置width、height属性 为需要lazyload的所有图片加上相同的class便于选择 $(".lazy").lazyload();2、如果需要处理没有js的浏览器(需要处理吗?) 3、不可见图片预加载 $("img.lazy").lazyload({ threshold :200}); 阅读全文
posted @ 2013-11-06 09:29 charling 阅读(380) 评论(0) 推荐(0) 编辑
摘要:function Person( name, age ){ this.name = name; this.age = age; this.sleep = function(){ alert( this.name + "is sleepping....zzzz"); } } function worker( name, age, company, job ){ Person.apply( this, arguments); this.company = company; this.job = job; ... 阅读全文
posted @ 2013-11-05 23:50 charling 阅读(186) 评论(0) 推荐(0) 编辑
摘要:当为窗口绑定resize事件时,大部分浏览器会在每改变一个像素就触发一次resize事件。这严重影响了网站的性能。解决方案是:利用settimeout方法为事件发触发的方法设置延迟执行的时间。实现: function lazyScroll( method, context, delay ){ clearTimeout( method.tId ); method.tId = setTimeout( function(){ method.call( context ); },delay ); } function doSomething(){alert(1);} ... 阅读全文
posted @ 2013-11-04 23:18 charling 阅读(2126) 评论(0) 推荐(0) 编辑
摘要:这两天做了一个跟cookie打交道比较多的项目,把其中重新认识的点记录下来:1、$.cookie(name, value, time),当time为0时,相当于本句没有执行,并不会将原本记录在用户浏览器中的同域、同名cookie清除。2、如果想要不定时的清除用户浏览器中固定域下固定名称的cookie,可以单独设置一个符号,当PM设置这个符号时,程序就执行cookie的重置工作,但不会影响正常逻 辑的执行。(好像还是不行。。。。)3、$.cookie(name, value, time),当value设置为数字时,cookie中会自动转化为字符串。因此下次取出cookie时,不是数字而是字符串. 阅读全文
posted @ 2013-11-04 21:42 charling 阅读(174) 评论(0) 推荐(0) 编辑