手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年11月的文章

jQuery SubClass 带来的新的变化

jquery在1.5的时候多了一个subclass,代码大约如下:

JavaScript代码
  1. subclass: function(){  
  2.     function jQuerySubclass( selector, context ) {  
  3.         return new jQuerySubclass.fn.init( selector, context );  
  4.     }  
  5.     jQuerySubclass.superclass = this;  
  6.     jQuerySubclass.fn = jQuerySubclass.prototype = this();  
  7.     jQuerySubclass.fn.constructor = jQuerySubclass;  
  8.     jQuerySubclass.subclass = this.subclass;  
  9.     jQuerySubclass.fn.init = function init( selector, context ) {  
  10.         if (context && context instanceof jQuery && !(context instanceof jQuerySubclass)){  
  11.             context = jQuerySubclass(context);  
  12.         }  
  13.         return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );  
  14.     };  
  15.     jQuerySubclass.fn.init.prototype = jQuerySubclass.fn;  
  16.     var rootjQuerySubclass = jQuerySubclass(document);  
  17.     return jQuerySubclass;  
  18. },  
很多看到这个代码的人都认为这个功能是用来优化插件的,因为现在jQuery的插件越来越多,有类似功能,类似名称的插件也越来越多了,所以,同名插件带来的困扰也就更多了。

未来怎么办,jQuery鼓励用户开发插件,但插件总不能老是给用户带来麻烦吧?所以这个subclass就成了新的插件机制所必备的方法,利用subclass来创建一个新的实例(即所谓的继承,当然也能覆写父类[jQuery]的方法 )。

只是这样的频繁继承,肯定会造成效率降低吧。怎么样既能继承,又不降低效率,这恐怕就是未来jQuery团队要考虑的事情了?但是否靠什么behavior这种行为的方式来加载呢?现在都在讲究这种行为触发性的插件。jQuery是不是未来也会采用这种方式呢。

Tags: jquery, plugin, subclass

少发牢骚多做事

最近发现自己发牢骚的次数多了,也不知道是为什么,或许是为了那些所谓的不满?
确实,生活中和工作中不满 的事情太多了,但也不应该一直挂在嘴边挂在手里。

毕竟,发牢骚其实不能解决问题,而且只会让自己不快乐。而且过多的发牢骚也只会让听你发牢骚的人也开始有所不满,或者被牢骚不满,或者对发牢骚的我感到不满。或许他心里也有牢骚,并发起来更加不满而已。。。

决定,乘着新年快到之际,告诉自己少发牢骚,多做点事。把手头的事情做做好,该做的都做好。不要浪费青春,青春没有多少时间可以被浪费了。。

 

Tags: 牢骚

又是swfupload惹的祸

swfupload这个控件,只要是涉及到多文件上传、大文件上传,那么就几乎应该是听过这个控件的名称的。

确实,它解决了不少问题,就象我所提到的多文件上传、大文件上传,但也有很多问题存在,从最早的版本到现在,经历了很多问题的改变。。

1、最早的那个SESSION问题。IE和FF的swf下session传递会不一致。这个问题我在09年就遇到过了,记录在[2009-03-09] - 备忘:swfUpload注意事项 。这个问题最初官方的DEMO里并没有提到,在后来的版本里才有涉及。。。现在DEMO里已经有了

2、我用的uploadify这个封装的插件,如果URL路径中含有“//”,在这个时候,如果JS中的路径是相对路径,比如“../../js/xxx.swf”之类的引用,那么,在上传的时候就会出现security error。这件事情我记录在[2011-01-21] - 开发笔记记录

3、就是今天遇到的问题,在chrome下面上传的时候出现http error。bobby查了一下资料,发现问题和2中的有点相似,2的问题是采用相对路径的时候,路径中不能有“//”,但chrome下则是,不能有相对路径,当把JS中指向swf的路径換成URL可以访问的路径后,OK一切正常【firefox全部正常】

4、不知道是uploadify封装的有问题还是什么 ,在某些IE下就是不正常。比如我win7 IE8,上传图标不显示,但有的同事就显示了。几样的win7 , IE8(也可能是因为我是64位的??),但某位朋友在xp IE下也不能显示,郁闷了。。准备換到YUI自带的uploader上看看

好吧,就记录这么多了。。。

Tags: swfupload, jquery, uploadify, chrome, firefox

UCHOME开发中遇到的问题

最近在做uchome二次开发的时候遇到一个小问题:强制登录。
什么是强制登录,即,我们在任何 时候,只要点击登录,就显示登录框,同时清除原来所有的登录状态信息。为什么呢,是因为担心在同步登录的时候,如果有某个频道没有同步成功,在点击登录的时候,会显示当前用户已登录,而不会触发登录了。所以必须强制清除登录状态。

于是根据这个需求,简单的在do_login里进行了cleancookie处理。然后而是加了一句:unset($_SGLOBAL['supe_uid']);

结果,几个FORM框里生成的formhash()值都不一样了。导致直接在提交的时候说来路不正常。

检查了很久(不过这次不是我解决的),发现居然是那个unset($_SGLOBAL['supe_uid']);导致的,但是看了formhash这个函数,里面是针对$_SGLOBAL['formhash']变量,没有和supe_uid有关。。。

所以感觉有点妖异。包括把$_SGLOBAL['supe_uid']设为0,设为null都没有关系,只是unset后就出错了。。。

又是一个没有时间解决的问题,先知道解决方法就成了。。。。记录一下。

Tags: uchome, unset, sglobal

HTTP 204和205的应用

上次看的那篇博客里介绍说到一点关于HTTP的code的问题,在jquery里面已经在1.5里被改进了。上次的问题:

XML/HTML代码
  1. 原本对于“请求成功”的浏览器状态码,除200-299以及304外,还有一个1223,来自于IE的一个BUG,会将204的状态码变成 1223。现在因为有了jXHR对象,相当于中间多了一层,因此从jXHR对象获取statusCode不会出现1223的情况,已经被变回204了。  

说实话,我对于204代码真的不知道有具体的作用,因为事实上,我们很少会用到,往往 返回的时候,要么返回1、0之类的,就要么是JSON之类的数据。

然而这篇文章,就说明了一些简单的理由:

内容由此开始:。。。。。。

之前和人讨论过这个问题,,, 今天感冒在家休息, 就回忆了一下, 整理如下.

我们很多的应用在使用Ajax的时候, 大多数情况都是询问型操作, 比如提交数据, 则Ajax只是期待服务器返回:

JavaScript代码
  1. {status: 0, message:""//status 0代表成功, 非零的时候, message中包含出错信息.  

我们知道HTTP的状态码, 2xx都是表示成功, 而HTTP的204(No Content)响应, 就表示执行成功, 但是没有数据, 浏览器不用刷新页面.也不用导向新的页面.

在HTTP RFC 2616中关于204的描述如下:

XML/HTML代码
  1. If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to take place without causing a change to the user agent’s active document view, although any new or updated metainformation SHOULD be applied to the document currently in the user agent’s active view.  

类似的还有205 Reset Content, 表示执行成功, 重置页面(Form表单).

XML/HTML代码
  1. The server has fulfilled the request and the user agent SHOULD reset the document view which caused the request to be sent. This response is primarily intended to allow input for actions to take place via user input, followed by a clearing of the form in which the input is given so that the user can easily initiate another input action.  

于是, 当有一些服务, 只是返回成功与否的时候, 可以尝试使用HTTP的状态码来作为返回信息, 而省掉多余的数据传输, 比如REST中的DELETE和如上所述的查询式Ajax请求.

最后说说205, 205的意思是在接受了浏览器POST请求以后处理成功以后, 告诉浏览器, 执行成功了, 请清空用户填写的Form表单, 方便用户再次填写,

总的来说, 204适合多次对一个Item进行更新, 而205则适合多次提交一个系列的Item.

但, 请注意, 目前还没有一个浏览器支持205, 大部分的浏览器, 都会把205当做204或者200同样对待.

------------

 

 

事实上,大多数时候,我们都是只利用200状态,然后返回一些数据来决定到底返回怎么样的数据喽。。。

上面的文章来自于:http://www.laruence.com/2011/01/20/1844.html,主要在于有次讨论204的时候涉及到的事情,然后遇到了就记下来了

 

 

 

 

 

Tags: http, jquery, 204