我有一个事件函数,它有异步任务,其中一些承诺等待结束。当我尝试打开
<input type="file"/>
后,即使事件是可信的,也不会打开 FileDialog
示例:
<html><body>
<script>
function myPromise() {
return new Promise((res, rej) => {
setTimeout(() => res(true), 1);
});
}
async function btnClick(event) {
event.preventDefault();
console.log(event.isTrusted);
try {
await myPromise();
} catch (err) {
}
document.querySelector("input").click();
console.log(event.isTrusted);
}
</script>
<input type="file"/>
<button onclick="btnClick(event)">btn</button>
</html></body>
我的控制台返回
true
true
因此,该事件直到最后都是可信的,但 safari 不会打开对话框。还有其他规则吗?
我遇到了同样的问题。谁能帮帮我!!!