Submitted by gouki on 2008, April 25, 11:37 PM
随便javascript 第5版的书出来,JS的写法也就越来越多了,以前定义一个对象,还得写var o = new Object();现在好了,直接var o = {};
可是这样带来的问题不少(其实是IE和FF的兼容性问题)
下面是一个朋友痛苦的经历:
XML/HTML代码
- 最近把YUI()引入到了现在做的项目当中,感觉做ajax非常顺手
-
- 由于firefox下有firebug这个插件,所以开发的时候都是以ie为准
- 稍微在ie下做些测试,一般都没有问题。
-
- 这次被一个逗号搞得非常辛苦。
-
- var send_email_callback =
- {
- success:handleSuccess,
- failure:handleFailure,
- };
- 这段代码在firefox和ie下都不会报错
- firefox运行正常,ie下导致整个脚本失效
-
- 调试都是用alert来调试,但是ie下alert的功能也失效了,无论alert放在文件的那个位置,都不会有弹框出来
- 整个js文件代码长达300行,找的好辛苦。。。
- 正确的应为: var send_email_callback =
- {
- success:handleSuccess,
- failure:handleFailure
- }; 唉,一个逗号引发的辛苦啊。。
-
- 这个错误应该是受到php里面array写法的影响
- 经常在定义array时为了给array添加新值方便,一般都是会再加一个逗号。。。
-
- 另外,还有个地方也会导致脚本在ie下失效
- _div_sending.className = 'mail_sending';
- //_div_sending.class = 'mail_sending';
- 其中第二行会导致脚本不能运行,也不会报错,同样无论什么地方放一个alert都不会有反应
- 额,以前看一本书上说,给控件加class的值,这样好像会做到多个浏览器兼容。。。faint,或许是我记错了吧。。
- 解决的办法,注释掉,或者用yui自带的添加的class的方法
- 这段代码是几个星期前写的,那个时候还没有看到yui给控件加class的方法
- YAHOO.util.Dom.addClass(_div_sending, 'mail_sending');
- 希望有人可以告诉我,ie下调试js简单的方法
- 额,我的js的水平也太臭了。。。额。。。。
确实,在"}"前的最后一个","非常害人。在IE下死活会报错,而且FF下面又完全正常。现在我一看报错,就立马检查是否多了这个",",PHP的ARRAY习惯害人啊……总是担心可能会往配置数组里加东西,所以,每行最后都习惯性的加上逗号,现在……不太敢了。
Tags: json, js
Javascript | 评论:6
| 阅读:30373
Submitted by gouki on 2008, April 25, 4:58 PM
本文内容来自网上,听说是真,羡慕一下
Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封喉,很快就写出了高性能的伯克利版TCP/IP。当时 BBN和DARPA签了巨额合同开发TCP/IP Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯伯硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI的主要作者之一。
Tags: bsd
Misc | 评论:0
| 阅读:20907
Submitted by gouki on 2008, April 25, 1:59 PM
jQuery lightBox plugin
simple jQuery Gallery
jCarousel Lite
在新的项目里,把商品的图片采用了这三个插件来处理,其中,simple jQueryGallery并不能算是一个插件,但相对还是比较有作用的。主要是在处理lightBox和carousel的兼容上存在了一些复杂度。
因为时间不够充分,所以,并没有改动原来的代码。也因此在实际的HTML代码里多了很多废代码,好在这些JS插件都不算大,加上废代码也没有多少。这些问题就暂时忽略不计了。
附上几张图片。。。
全图:点击下面的小图,在大图片框里会显示大图片,点击左边和右边的箭头,可以使下面的小图框循环滚动。点击大图片框里的图片,会出现lightBox效果
lightBox效果:
小图片循环效果:
Javascript | 评论:0
| 阅读:30571
Submitted by gouki on 2008, April 24, 12:01 AM
升级记录
2.0
这次又做了一次比较大的调整:增加了FunctionValidator这种校验方式,现在你可以调用外部函数了;调整了内部部分算法;
你打开下载压缩包里的index.html,将会看到全新的演示。
1、增加FunctionValidator校验方式。作用:你可以用外部函数对表单元素进行校验和处理,返回true/false表示校验是否成功;返回字符串表示自定义错误信息,校验失败;如果没有返回值表示处理过程,校验成功。范例代码如下:
$("#sfzh").formValidator({onshow:"请输入15或18位的身份证",onfocus:"输入15或18位的身份证",oncorrect:"输入正确"}).FunctionValidator({fun:isCardID});
fun这个参数给你的函数传递了2个参数(该表单元素的值,表单元素element) 。具体情况,请看API帮助文档
2、当你调用PageIsValid的时候,如果未校验通过,则给onError传递2个参数(第一个校验没通过元素的错误信息,第一个校验没通过元素element)。范例代码如下:
$.formValidator.initConfig({onError:function(msg){alert(msg)}});
3、AjaxValidator校验方式增加一个配置参数buttons(你点提交的按钮(组)jQuery对象)。作用:当你触发了ajax校验,buttons里对应的按钮(组)就会灰掉,一直等待服务器返回数据为止。范例代码如下:
$("#test1").formValidator({...}).InputValidator({...}).AjaxValidator({
url : "Default.aspx",
datatype : "json",
success : function(data){...},
buttons: $("#button_id"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名重新",
onwait : "正在对用户名进行合法性校验,请稍候..."
});
4、由于增加了自定义错误信息的功能,为了跟FunctionValidator校验方式里"fun"函数返回意义统一,更改了formValidator里的onvalid参数返回的意义,给大家带来不便请谅解。返回true/false表示校验是否成功;返回字符串表示自定义错误信息,校验失败;如果没有返回值表示处理过程,校验成功。
» 阅读全文
Tags: jquery, javascript, form, validator
Javascript | 评论:3
| 阅读:51924
Submitted by gouki on 2008, April 23, 9:29 AM
ThinkPHP的模版引擎强大就强大在于它可以使用XML标签来为TP模版引擎进行扩展,因此TP的标签功能就成了TP模版的亮点所在。要想让TP的模版功能更加强大,你就得学会扩展TP的标签功能,即:自定义标签
开发自定义标签功能的时候,有几个注意的地方,
1、文件名的规范性,这个当然是不用多解释了,TagLibInput.class.php
(TagLib加是你定义的标签名,首字符大写,这样你的文件名中的Input就会自动认为你的XML文件名)
2、目录所在:目前暂时还是存放到THINKPHP的核心类库里,目录为:/THINKPHP/Lib/Think/Template
主程序文件放到:/THINKPHP/Lib/Think/Template/TagLib/ 目录下
自定义的XML文件放到:/THINKPHP/Lib/Think/Template/Tags/ 目录下
(自定义的文件是小写的标签名,即刚才类名中的Input的小写)
注意事顶:
如果你发现你自定义的标签没有被解析,请按如下方法进行检查(以input标签为例)
1、查看文件开始的地方是否加载了<tagLib name="cx,html,input" />,同时,请检查是否符合XML规范,如:标签一定要闭合。例:<br />,否则会出现XML解析错误
2、检查文件是否都为UTF-8编码,因为在解析XML的时候,都是采用UTF8编码,如果不是UTF8编码,会出现一些奇怪的解析错误,很多时候都会出现simpleXml解析器错误,如果出现这种错误,请检查文件编码,如果是UTF8编码的文件,请同时检查文件头是否存在BOM标记。
3、自定义的标签中,是否忘了双引号。由于在写HTML的时候,很容易忽略双引号,比如<input type=text name=name>,如果是这样,在被当成XML解析的时候,肯定会报错的,正确的写法应该是:<input type="text" name="name" value="value" />(标签要闭合),如果是自己自定义的标签,则应该这样写:<input:text name="" value="" />
Tags: thinkphp, 标签
PHP Framework | 评论:0
| 阅读:33713