对同一元素进行递归单击的问题



递归地仅对同一元素进行两次单击调用,但单击操作不遵循默认操作,想法是当用户单击<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;

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

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

最新更新