源代码如下:
html 部分:
<button id="button1">延迟 4s</button><button id="button2">延迟 5s</button><input id="input" type="file">
js 部分:
document.getElementById('button1').onclick = function(){ setTimeout(() => { document.getElementById('input').click() }, 4000) }
document.getElementById('button2').onclick = function(){ setTimeout(() => { document.getElementById('input').click() }, 5000) }
点击 button1,延迟 4s,会弹出 input 弹窗;
点击 button2,延迟 5s,弹窗将失效,控制台报黄色警告: File chooser dialog can only be shown with a user activation.
搜相关资料是由于浏览器安全机制,如果距离用户操作时间较长的话,会导致此类事件失效。
我尝试用 try catch 和 window.onerror,都无法捕获此异常,所以无法判断是不是出错了。
不知道大佬们有啥高招?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.