开始我想用CustomEvent。
但用了发现这个API并没有起什么用。
于是我这样写了:
obj[i].addEventListener("mouseover",hoverListener ,false);
function hoverListener(event) {
event.target.addEventListener("mouseout", function() {
clearTimeout(t);
},false);
var t = setTimeout(function(){event.target.click();},1000);
}
这样写有个问题,就是每次mouseover都会注册一个mouseout的侦听器,且无法覆盖,应为函数在mouseover的处理函数中定义的。
后来想过用on属性,但既然要求完美,on属性只此一个,不宜于扩展。
所以最终问题有这几个:
事件处理函数在后面声明,这个函数体内任何位置都可以用,为什么火狐报错?
如何完美注册一个鼠标指针移进且停留一秒的事件处理程序,而且不破坏全局对象
用例地址:codepen.io/mantou132/pen/eprXZK
function hoverForOneMinute(ele,handler,useCapture){
var hoverStart;
var isHoverEnd=false;
var eleId=ele.addEventListener("mouseover",function(){
hoverStart=new Date().getTime();
isHoverEnd=false;
sleep(1000);
if(!isHoverEnd){
handler();
}
},useCapture);
ele.addEventListener("mouseout",function(){
isHoverEnd=true;
},userCapture);
}
function sleep(time){
var hoverStart=new Date().getTime();
while(new Date().getTime<hoverStart+time){
//do thing
}
}