毋庸置疑,对于input的操作,是javascript中最常用,最多见的操作。因此对于input的相关各种事件也就是大家都必须要关心的。
大家耳熟能详的大约也就是:onChange,onClick,onDbClick,onFocus,onBlur之类。onDbClick一般都难以遇到,但其实这并不全。翻开jQuery的手册,你会发现对于事件处理,有很多。大部分都是针对于input的,当然也有对于img对象的。
以下就是全文:
1.基础:本次分析原理就是在各个浏览器下input内容变化的时候触发事件的各种不兼容性.在ie下用onpropertychange事件,在其他浏览器里用input事件.
2.用例:对每个浏览器分别测试如下的情况:
–输入英文字母时–开启输入法时–大小写不同时–输入运算符时–按下tab键时–输入法中按下空格时–按下控制键时–复制粘贴时–删除文本时–等等
3.测试开始:(只标出特殊情况,没标出的表示正常触发,每次只触发一次事件)
chrome:+开启输入法时,可以捕捉到输入事 件.+开启输入法的时候按下空格键,触发两次事件,猜测一次是空格触发的,一次是输入法改变输入框里的文本时触发的.+开启输入法的时候,按下空格后,立 即按下大写锁定,此后所有的输入事件都会被触发两次,原因不知.+没有开启输入法的时候,方向键不会触发事件,但是开启输入法后,方向键可以触发事件.+ 剪切和粘贴都会触发事件.+tab键不处罚事件,开启输入法时,按tab键触发事件.+按住shift和其他键(例如:数字键),每输入一个字符触发两次 事件.
Firefox:+开启输入法时,不能扑捉到事件,但 是按下空格时,可以触发两次事件.+任何时候方向键都不触发事件.+开启输入法的时候,按下空格后,立即按下大写锁定,此后所有的输入事件都会被触发两 次,原因不知.+按下tab键的时候不触发事件.++Firefox页面刷新的时候内容会被保留在输入框里.+按住shift和其他键(例如:数字键), 每输入一个字符触发两次事件.
opera:+正常情况下,在输入框里按下tab键会 触发一次事件,但是此后只要不刷新页面,tab键都不会再触发此事件.+开启输入法后不会触发事件,开启后,方向键和tab键都不触发事件.+开启输入法 时,按下空格只触发一次事件,不会出现触发两次事件的情况.+粘贴的时候触发事件,剪切的时候不触发
ie:+输入法不会触发事件,按空格也都是只触发一次,方向键任何时刻都不触发.+刷新页面的时候内容会留在input里,而且注意,不管input是不是空的,刷新页面后自动触发一次事件.
3.总结.
就一句话,差异很大.
注意input事件可以用在chrome,Firefox,opera里,但是只能用 addEventListener绑定,不能用ontype形式,而onpropertychange可以用on形式,也可以用attachEvent绑定
--EOF--
了解这些兼容性的处理,对于页面的操作处理方面才会有更好的效果和用户体验。原文来自于http://www.beiju123.cn/blog/?p=375,是我采用read it later读回来的。。
官方的例子用起来很爽,所以,如果觉得有适用的话,可以尝试一用。当然我不认为这玩意可以真正用在前台上,如果用于后台还是可以接受的。唯一可以尝试用于前台的就是日历控件,长的也不错。压缩后20K还是可以被广大人民群众所接受。如果可以再分拆,或许会更小吧?试了一下,感觉效率不是特别的高?但真的扔在后台还是问题不大的。
样式也不错。。。。
官方在http://www.wbfsaworkstation.com.cn/#,好长的网址啊


这两天在博客园不停的看到有人在讲这个EasyUI,而且cssrain也在第一期的资讯中介绍了这个UI框架。当然我在资讯前已经看到这个UI框架的介绍了,并有幸下载了一下,才知道这个插件,应该是中国人写的。。。
用起来,整体感觉还行,easyUI的介绍是说轻量级替代extjs框架的UI框架。事实上从应用方面来说,或许是比extjs简单,因为需要写js代码的地方很少,但并不代表BUG不少。例子里就有很多BUG。所以,如果是简单的用,那还是可以接受的。最起码那个login页面还是可以尝试着套用一下。然后就是那个layout。。。
login的demo中,如果按了最小化,窗口都消失了。如果页面上没有open window,那,如何再次打开这个窗口?呵呵。
当然,这个框架看上去很美。也不算特别大。他的一些参数是直接写在html标签中的,也就是说他利用的是html标签,而不象extjs,纯粹是用js代码来实现。
更多的参考可以看这里:http://jquery-easyui.wikidot.com/tutorial
目前不建议在项目中使用,如果是尝试性的项目,而且美工又不好的人,是可以尝试一下,最起码不会象extjsv那样难学。也没有那样耗资源吧。
jQuery发展到现在,经历过很多版本。大多数用户都是经历过1.2.6,1.3.1,和如今 的1.4.1的,每次每版本发布的时候都会有新功能实现,而且作者还会说,我们改进了XXX功能。
那么,对于一个用户来说,我们当然是不关心这些函数如何实现的。可如果你想学习jQuery的原理和基本的实现方法,阅读源码就显得至关重要了。
源码有上千行。怎么办?为了某一个方法,你不停的看1.2.6和1.3.1以及1.4.1的代码?再分析?
不用这么麻烦的。真的,你看这里:http://james.padolsey.com/jquery/
网站的title直接就写了:jQuery source viewer,呵呵。选择一个版本,输入你想要看的内容。下面就直接显示出来了【oh ,居然还是代码自动完成+ajax?】
代码显示的时候,你还可以选择一个查看样式呢。emacs?vim?各种各样的配色都有。
不过。。好象代码没有注释的。感觉有点遗憾。

昨天在网上闲逛,发现Qihangnet的博客上有篇文章,很老的。06年的,介绍了如何让通过搜索引擎过来的关键字高亮。原文来自于支 持百度的搜索引擎来源的关键字加亮,仔细看了一下,文中介绍了一段JS,那段JS是这个网站http://www.kryogenix.org/code/browser/searchhi/的。再根据Qihangnet的文章,我也尝试进行了一些转换,找了网上的一些javascript的gb2312toUTF8的代码,结果却死活不正常。出来都是乱码。分析了一下searchhi的源码。核心的一块就是在判断浏览器过来的参数。于是我在无法用JS转换编码后用PHP实现了一下(其实很恶心,百度到现在都是GB2312......)。
PHP代码
- function getReferer ()
- {
- if(isset( $_SERVER['HTTP_REFERER'] )){
- parse_str( parse_url( $_SERVER['HTTP_REFERER'] , PHP_URL_QUERY ) , $query);
- if(isSet( $query['q'] ) ){
- return $query['q'];
- }else if ( isSet( $query['p'] ) ){
- return $query['p'];
- }else if ( isSet( $query['wd'] ) ){
- if(!$query['wd']){
- return '';
- }
- return iconv( 'gb2312', 'utf-8', urldecode( $query['wd'] ) );
-
- }
- }
- return '';
- }
取回这个referer后的参数后,再用searchhi的代码进行高亮了一下。因为我只是简单实现,所以效果很差。理论上应该是要根据传递过来的参数右下角弹窗,进行文章推荐的。。但我懒得搞了。直接就searchhi的代码简单实现了一下。
效果如下: