JavaScript - 在 setTimeout 之后根据值执行任务
JavaScript - execute a task after setTimeout depending on a value
嗨,必须执行两个不同的任务(执行PHP文件),具体取决于我离开鼠标按钮在图像上单击的时间。我正在处理的事件是 onmousedown 和 onmouseup。
如果 t <500 毫秒,则执行任务 #1,否则执行任务 #2。
因此,基于我基本的JavaScript知识,我编写了以下代码:
var lastTime = 0;
var now = 0;
var tmptimer = 0;
var mousedown = false;
/* to be executed from onmousedown event */
function tsMouseDown(angleH, angleV)
{
var angleH2 = parseFloat(angleH);
var angleV2 = parseFloat(angleV);
var div = document.getElementById("debugDiv");
div.textContent = 'tsMouseDown: ' + angleH + " - " + angleV + ' - ';
mousedown = true;
lastTime = new Date().getTime();
tmptimer = setTimeout( function(){ ;}, 500);
div.textContent = 'tsMouseDown: ' + angleH2 + " - " + angleV2 + ' - ' + tmptimer + ' - ' + mousedown;
/*
try to execute task #1 or #2 depending on mousedown value
(!) DOES NOT WORK
*/
if(mousedown == false)
{
$("#content").load("task1.php",{ /* args here ... */ });
}
else if(mousedown == true)
{
$("#content").load("task2.php",{ /* args here ... */ });
}
}
/* to be executed from onmouseup event */
function tsMouseUp()
{
mousedown = false;
clearTimeout(tmptimer);
tmptimer = -1;
var div = document.getElementById("debugDiv");
now = new Date().getTime();
if((now - lastTime) < 500))
div.textContent = "tsMouseUp: " + (now - lastTime) + "< 500 ms - " + tmptimer + ' -' + mousedown;
else
div.textContent = "tsMouseUp: " + (now - lastTime) + "> 500 ms" + tmptimer + ' -' + mousedown;
}
代码可以很好地识别鼠标按钮保持单击的时间,但是函数 tsMouseDown 中的 mousedown 变量的条件永远不会像我想要的那样被计算,因为 task2.php 总是被执行,即使 tsMouseUp 在超时之前执行。
解决这种情况的更好方法是什么?我必须如何更改我的代码才能使其工作?
提前谢谢你。
更清楚一点的是将事件相互绑定..例如:
var longTouch = false;
$(this).mousedown(function() {
timeout = setTimeout(function() {
longTouch = true;
}, 500);
}).mouseup(function() {
clearTimeout(timeout);
if (longTouch && longTouch == true) {
// do whatever you want if it was longer than 500ms
} else {
//else do click actions
}
});
longTouch = false;
这样,mouseup
事件会中断mousedown
,或者如果它长于指定的间隔,则执行其他操作。我希望它足够清楚。
我做了一个jsFiddle来演示。
相关文章:
- 未执行Ajax循环的Javascript之后的代码
- 如何在`window.open`之后执行回调
- 在$state.go之后执行$window.location.reload(true)
- Gulp复制任务完成后如何执行通知
- JQuery - 在浏览器关闭事件时执行任务
- 选择多个项目以执行任务
- JavaScript - 在 setTimeout 之后根据值执行任务
- 无法使用grunt ssh在服务器上执行任务
- 在执行服务之后延迟控制器初始化
- 否则,如果命令未执行任务
- Why complete在执行串联之后不被调用
- Android Studio -执行任务app: packagerrelease失败
- 执行任务时,tab或enter按下表单输入文本与骨干/木偶
- 使用python cgi执行任务的任何方式
- 要查找的函数然后执行任务
- 通过forEach循环执行任务以复制具有数组长度的任务
- 在AngularJS中,如何在控制器中调用指令来执行任务
- 如果两个条件为真,我需要jQuery来执行任务
- 在函数完成之前执行函数之后的代码
- Javascript函数在Google Chrome浏览器中执行任务失败