递归单击同一元素的问题

时间:2019-01-22 14:33:15

标签: javascript dom-events

在同一元素上递归调用onclick两次,但是click操作不会遵循默认操作, 想法是,当用户单击<input />时 它不应该弹出文件浏览器,但首先要执行一些异步任务, 然后在没有用户手势的情况下调用点击操作,从而打开文件浏览器。

示例问题

https://jsbin.com/zuzinen/edit?html,js,console,output

<body>
  <input id="inp" type="file" />
</body>


var clicked = false;

function takePermission(cb) {
  setTimeout(function() {
      clicked = true;
      cb();
    }, 2000);
}

function handleClick(e) {
  console.log(clicked)
  if (!clicked) {
    e.preventDefault();
    takePermission(function() {
      document.getElementById('inp').click();
    });

  }
}

document.getElementById('inp').onclick = handleClick;

1 个答案:

答案 0 :(得分:0)

在第一次单击后,将clicked分配为true,这意味着不会触发if语句。

因此,第一个之后不再有对click()的调用。