易截截图软件、单文件、免安装、纯绿色、仅160KB

javascript事件系统的发展史2

综观一个系统的发展,无非是发现一个问题就把它独立出来解决掉,因此它的所有模块(或者分支)其实针对独立的问题,这样我们对这些问题若有什么更好的解决方法,替换相应的模块便是,要不代码混杂在一起没法看了。上一部分就提到了,attachEvent的事件列队出了些问题,我们要手动构建列队了。所谓列队就是有先有后的问题,因此DE大神搞了一个全局的uuid,分配给每个回调函数。但要注意,每个回调所针对的事件源与事件类型,因此这不可能一个数组搞定。看下图:
el.attachEvent("onmouseenter",function(){alert(window.event.type)})
| | | | |
| | | | |
事件源 监听器 事件类型 回调函数 事件对象
事件源,其实el也一定是事件源,如某同类型事件从文档树下冒泡上来,或者顶层对象要捕获它下面的某个同类型事件,那它就成了currentTarget。为简单起见,我称它为事件源。这个事件源可以绑定很多监听器,每个监听器可以针对不同的事件类型,当然这也意味着有许多回调函数。当我们发现attachEvent多个同类型事件时,回调函数的次序出错时,意味着,如果我们还要它时,每种事件类型只能绑定监听器一次。那不就意味着,一个监听器只有一个回调函数,因为只有一个次序肯定不会出错!但怎么添加更多回调函数呢?嗯,我们需要一个数组。数组里面的回调函数才是我们自己添加的,然后一个for循环执行它们就是!
var queue = [];
el.attachEvent("onmouseenter",function(){
var e = window.event;
for(var i=0,n=queue.length;i<n;i++){
queue[i].call(this,e)//queue[i]为我们自己的回调函数,this指向el
}
});
queue.push(callback)
这样就实现监听事件与添加回调函数相分离。但是一个事件类型就要搞一个queue,而且这些事件类型即使是同一类型还有事件源之分。那会产出巨量的全局变量。因此我们必须找个地方放置它们。DE大神在要监听的每个元素节点(或者文档对象什么的)上设置一个events属性,那是一个对象,然后以type-object的形式保存,type即为事件类型,object为一个对象,键为他的那个uuid,值为回调函数。下面是他的addEvent函数的一部分,完整代码这里(要翻墙):
function addEvent(element, type, handler) {
if (!handler


相关文档:

一丝javascript方法

///

<summary>

///
一些常用的Javascript方法

///

</summary>

public

static

class
Jscript
{

///

<summary>

///
弹出提示框

///

</summary>

public

static

void
Alert(Page page ......

用javascript评估用户输入密码的强度


密码已经是我们生活工作中必不可少的工具,但一个不安全的密码有又有可能会给我们造成不必要的损失。作为网站设
计者,如果我们在网页中能对用户输入的密码进行安全评估,并显示出相应的提示信息,那么对用户设置一个安全的密码
将有很大帮助。同时也使得网站更具人性化,更有吸引力.
什么是一个安全的密码呢?本程序按以下 ......

javascript 总结

selected控件:在js中的设置是默认是 selected=true
button和checkbox的可用性设置: disabled=true 
text文件的只读属性:readOnly
在存在Iframe的时候在需要控制外部数据的时候需要用到 parent
对象没有length属性,只有数组有length长度
在js中可以对对象随意赋属性,如果该属性没有值则为undefined
sortArra ......

javaScript keyCode 列表


字母和数字键的键码值(keyCode)
按键
键码
按键
键码
按键
键码
按键
键码
A
65
J
74
S
83
1
49
B
66
K
75
T
84
2
50
C
67
L
76
U
85
3
51
D
68
M
77
V
86
4
52
E
69
N
78
W
87
5
53
F
70
O
79
X
88
6
54
G
71
P
80
Y
89
7
55
H
72
Q
81
Z
90
8 ......

JavaScript中字符串相加性能

    在JavaScript中字符串组合相加,大家一般直接用+拼接起来.例如:
for(i=0; i<len; i++){
  if(zdname != ""){
  zdname += "#" + trNode.children.item(i).getAttribute("busPath");
 }else{
  zdname = trNode.children.item(i).getAttribute("busPath");
  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号