Javascript:对mouseover和mouseout多次触发进行警报检查
Javascript: alert checking for mouseover and mouseout firing multiple times
编写一个执行以下操作的代码:
- 加载时将鼠标侦听器添加到网页
- 检查鼠标位于哪个元素上
- 如果鼠标位于锚点标记上,则在离开前停留一段时间后执行某个功能。现在我只是任意使用10000毫秒
下面是我用作测试台的示例代码
<html>
<head></head>
<title>A test page</title>
<body>
<script type='text/javascript'>
document.addEventListener("mouseover", checkElement, false);
function checkElement(ev){
var elm = ev.target || ev.srcElement;
if(elm.tagName === 'A'){
var focusTime = new Date().getTime();
elm.addEventListener("mouseout", function() {tellTime(focusTime)}, false);
}
}
function tellTime(focusTime){
var blurTime = new Date().getTime();
if ((blurTime - focusTime) > 10000) {
alert ('You spent a long time there');
}
}
</script>
<a href="www.google.co.in">This is a hyperlink</a>
<p> This is just some bloody text </p>
</body>
</html>
在测试时,我发现当警报被触发时,它会被多次触发;两次、三次或甚至更多。我想知道为什么会发生这种情况,以及我能做些什么来避免对同一元素多次发出警报。
您正在向元素添加多个mouseout
事件。
您需要解除前一个函数的绑定,或者正常分配它,并让focusTime
的作用域同时适用于这两个函数。
重复的事件绑定。。。请尝试以下代码。
<html>
<head></head>
<title>A test page</title>
<script type='text/javascript'>
document.addEventListener("mouseover", checkElement, false);
function checkElement(ev){
var elm = ev.target || ev.srcElement;
if(elm.tagName === 'A'){
var focusTime = new Date().getTime();
elm.addEventListener("mouseout", tellTime, false);
}
function tellTime(){
elm.removeEventListener("mouseout", tellTime, false);
var blurTime = new Date().getTime();
if ((blurTime - focusTime) > 2000) {
alert ('You spent a long time there');
}
}
}
</script>
<body>
<a href="www.google.co.in">This is a hyperlink</a>
<p> This is just some bloody text </p>
</body>
</html>
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 音频控件在mouseover上显示,在mouseout上淡出
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何检查字符串的一部分与数组匹配
- Jquery如何检查今天的时间大于使用给定时间
- 使用javascript反复检查用户在facebook上的登录状态
- 使用 jQuery 检查所有值是否为空或已填充
- 使用Javascript使用数组检查文本框中的值
- jquery mouseover(),用于检查拖放中的文件
- Javascript:对mouseover和mouseout多次触发进行警报检查