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