javascript - 使用 mousedown 处理程序按下左键,按下右键,同时按下左键和右键

标签 javascript jquery

我使用 JavaScript 实现扫雷游戏。我需要使用 mousedown 处理程序推迟 3 个事件(按下左键、按下右键、同时按下左键和右键)。

let isLeftMouseDown = false;
let isRightMouseDown = false; 
let timer,
timeout = 100;
function clickCell(event){
    let $target = event.target;
    let clickCell = getCellById($target.id);
    let isRightMB;
    let isLeftMB;
    event = event || window.event;
    if ("which" in event){
        isRightMB = event.which == 3;
        isLeftMB = event.which == 1;
    }    
    else if ("button" in event){
        isRightMB = e.button == 2;
        isLeftMB = e.button == 0;
    }

    if(isLeftMB){
        isLeftMouseDown = true;
    }
    else if(isRightMB){
        isRightMouseDown = true;
    }
    if(!timer){
        timer=setTimeout(function(){                
            if(isLeftMouseDown){
                if(!clickCell.flag){
                    $($target).removeClass("close").addClass("open0");
                } 
            }
            else if(isRightMouseDown){
                toggleFlag(clickCell)
            }
        }, timeout)
    }
    else{
        clearTimeout(timer);
        timer = null;
        if(isLeftMouseDown && isRightMouseDown){
            openCellEnviroment($target);
        }
    }
}
$field.on('mousedown', clickCell);

我使用了 setTimeOut 但它并不完美。我想知道任何其他方式。

最佳答案

寻找these

element.addEventListener('click', (e) => {//do something on click on element})

关于javascript - 使用 mousedown 处理程序按下左键,按下右键,同时按下左键和右键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53830410/

相关文章:

javascript - 如何在回显的js代码中分配php变量?

javascript - Web - 菜单不响应 1024-1200 范围内的点击

javascript - 在其他键仍被按下时触发 keyup

javascript - jQuery .click on element with element behind stacking 错误?

jquery - 如何根据内容 div 顶部的偏移量更改图像

javascript - jQuery Accordion 菜单 : scroll to active menu item

javascript - 使用 uglifyjs 在生产配置中使用 webpack 预构建 es6 npm 模块

javascript - jQuery 未捕获语法错误,无法识别的表达式 : +

javascript - 尝试使用 javascript/jquery 使选择器动态化

jquery - XMLHttpRequest Origin null 不允许文件 :///to file:///(Serverless) 的 Access-Control-Allow-Origin