13.4.4

<script>

var EventUtil={
//省略的代码

getCharCode:function(event){
if(typeofevent.charCode=="number"){
return event.charCode;

}else{
event.keyCode;

} //这个方法首先检验charCode属性是否包含数值,如果是,则返回该值,否则,返回keycode.

};

</script>
示例

<script>

var textbox=document.getElementById("mytext");
EventUtil.addHandler(textbox,"keypress",function(event){
event=EventUtil.getEvent(event);
alert(EventUtil.getCharCode(event));
});

加载外部JavaScript文件的代码

<script>

EventUtil.addHandler(window,"load",function(){
var script=document.createElement("script");
EventUtil.addHandler(script,"readystatechange",function(Event){
event=EventUtil.getEvent(event);
var target=EventUtil.getTarget(event);
if(target.readyState=="loaded"||target.readyState=="complete"){
EventUtil.removeHandler(target,"readystatechange",arguments.callee);
alert("script loaded");
}
});
script.src="example.js";
document.body.appendChild(script);
});
</script>

上面同样的编码方式也适用于通过<link>元素加载CSS文件的情况,同样,最重要的是要疫病监测readystate的两个状态,并在调用了一次事件处理程序之后就将其删除。

<script>

EventUtil.addHandler(window,"load",function(){
var link=document.createElement("link");
EventUtil.addHandler(script,"readystatechange",function(Event){
event=EventUtil.getEvent(event);
var target=EventUtil.getTarget(event);
if(target.readyState=="loaded"||target.readyState=="complete"){
EventUtil.removeHandler(target,"readystatechange",arguments.callee);
alert("script loaded");
}
});
link.href="example.css";
document.getElementsByTagName("head")[0].appendChild(link);
});
</script>


事件委托(占内存少)

<body>
<ul id="mylink">
<li id="link1">e</li>
<li id="link2">w</li>
<li id="link3">q</li>
</ul>
</body>
<script>
var list=document.getElementById("mylink");
EventUtil.addHandler(list,"onlick",function(){
var event=EventUtil.getEvent(event);
var target=EventUtil.getTarget(event);
switch(target.id){
case link1:
document.title="I changed the document's title";
break;
case link2:
location.href="http://ww.baidu.com";
break;
case "link3":
alert("hi");
break;

}
})
</script>
为避免双击,单击这个按钮时就将按钮移除并替换成一条消息,移除事件处理程序,内存可被再次利用。

<body>
<div id="mydiv">
<input type="button" value="Click me" id="mybtn">
</div>
</body>
<script>
var btn=document.getElementById("mybtn");
btn.onclick=function(){

btn.onclick=null;
document.getElementById("mydiv").innerHTML="pp";
}

</script>







评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值