如果不考虑opera、chrome5等浏览器,这段脚本足够用了,适用于IE与FF。对于IE是可以读取到file的value值,简单地处理一下,对于firefox,则通过File API去获取图片,通过dataURL的方式嵌入:) 目前chrome5还未完全支持File API,期待一下:)
[阅读全文]Kissy,一个小巧灵活的简洁UI库,由淘宝UED发起开发,以拿来主义的方式,融合了许多YUI与JQ的思想与现成功能,同时根据自身的需求,做了一些扩充。详细的项目信息:http://code.google.com/p/kissy/,文档:http://kissy.googlecode.com/svn/trunk/docs/index.html
Kissy核心部分
很多东西看起来相当亲切,与YUI 3.x类似的,在它的基础上实现了很多其他的方法,如merge()、augment()等。Kissy的核心部分主要就是定义了一个mix()方法,然后通过mix()方法去向自身扩充,这一点在Kissy中很普遍:mix(S, {...})。
核心部分主要是一些常用方法的定义,add()、mix()、augment()、merge()、namespace()等等,不过有点不解为什么还将YUI中的guid()也放进来了,感觉这个方法几乎用不到,真要用到的话,自己实现一下就可以了,没有必要融入到一个库中——至少在使用YUI的时候,我几乎没用到过这个功能:)
看到核心尾部的注释,去掉了对YUI 3.x的沙箱(关于沙箱机制,请看怿飞的的文章《学习YUI3中的沙箱机制》)的模拟,我觉得靠谱,够用就好,不需要太强大,很多时候我们只需要一个库,但却在设计时将它当成一个框架去开发,完全没必要假设各种小概率的场景。
另外,看到一个Kissy-lang中的方法globalEval()很有意思,在此前我还没注意到可以有这样的方式来动态插入一段脚本并执行它:
[阅读全文]在日常的工作中,我们写下的大多JavaScript都是基于事件来展开的,我们不断地写下各种事件监听器,用于响应事件触发时需要执行的操作,例如最简单的click事件:
E.on(htmlElement, 'click', function(ev){
//code here
})
不过当交互变得复杂时,单纯的事件监听器并不能满足我们的需求,自定义事件可以让我们方便地将复杂的事件进行拆分,化整为零,变成多个小事件,这样更容易去控制。
自定义事件的触发点,是在你定义的“感兴趣的时刻”,所谓的“感兴趣的时刻”,举例来说,可以是一个按钮被点击,用户输入被改变,文本颜色改变等等,它涵盖了传统的事件(click、mouseover、mouseout等),但是又不仅限于这些事件,你可以将任何你想关注的变化定义成事件,为它编写一个相应事件处理方法。
要使用自定义事件,需要先声明一个自定义事件的对象:
var myEvent=new YAHOO.util.CutsomEvent(type, context, silent, signature);
type参数为事件类型,事件触发时,会被传给响应事件的事件监听器。
context参数为上下文,一般我们使用this,即指向事件本身。
signature参数(signature)用于指定向订阅的事件——也就是事件监听器传递参数的方式,YUI中允许你使用两种方式来传递补参数:
YAHOO.util.CustomEvent.LIST方式
- 参数1:事件名称
- 参数2:传入fire()方法的参数集合
- 参数3:提供给订阅事件的一个自定的对象
YAHOO.util.CustomEvent.FLAT方式
- 参数1:传入fire()方法的第一个参数,也可以是数组或者对象字面量
- 参数2:提供给订阅事件的一个自定的对象
silent参数用于指明是否在debug中显示相关的信息
声明完了自定义事件,接下来就需要为你“感兴趣的时刻”订阅相关的处理事件。
myEvent.subscribe(function(){
//响应自定义事件的操作
alert('响应自定义事件');
}, this);
OK,在我们“感兴趣的时刻”,触发自定义事件。
myEvent.fire();
介绍了这么多,来看一下简单的例子,或计更容易把晦涩的问题简单化:
先来看一个结构,你会怎样
- 龙刚:这是我发的一个信息,活活活活活活
- 龙刚:这是我发的一个信息,活活活活活活
- 龙刚:这是我发的一个信息,活活活活活活
- 龙刚:这是我发的一个信息,活活活活活活
其实,可以写得很简单:
[阅读全文]下午写着写着,又遇到一个bug,就改装了一下成为一个考题,来考一下大家吧。
[阅读全文]