无法理解test(event.button)方法

时间:2016-03-16 07:25:35

标签: javascript regex

1.我无法理解if()中的条件,那么event.button是什么意思?2。 2 | 6 | 4 | 7在正则表达式中的含义是什么?数字是否与even.button有一些特殊的联系?有人帮我吗?谢谢!

  eleLink[index].onmouseup = function(event) {
            event = event || window.event;
            var target = this;
            if (/^2|6|4|7$/.test(event.button)) {
                target.style.visibility = "hidden";
                setTimeout(function() { target.style.visibility = "visible";}, 16);            
            }        
        };  

1 个答案:

答案 0 :(得分:1)

在鼠标事件中,button是与事件相关的按钮。 /^2|6|4|7$/.test(event.button)会将event.button强制转换为字符串,然后针对该正则表达式测试该字符串。表达式可能用于测试按钮是2,6,4或7.它没有这样做,因为替换不适用于作者的思维方式他们做到了;相反,它测试按钮号,转换为字符串, 2开头,包含6或4,或结尾。为了获得交替,作者可能意味着,他们需要/^(?:2|6|4|7)$/

但是,代码并没有多大意义。 MouseEvent#button被定义为具有值0,1或2,以指示哪个按钮改变了状态:0表示主(通常是左)按钮,1表示辅助(中间或类似)按钮,2表示二级(通常是右侧)按钮。作者可能一直在处理使用非标准内容的浏览器,或者可能将buttonMouseEvent#buttons(复数)混淆,后者是当前按下的按钮的位掩码:0 =无,1 =主要,2 =次要,4 =辅助,然后是自定义按钮的更多位标记值。