使用文件输入后,Javascript 警报会锁定 IOS Chrome 上的页面

Posted

技术标签:

【中文标题】使用文件输入后,Javascript 警报会锁定 IOS Chrome 上的页面【英文标题】:Javascript alert locks up page on IOS Chrome after using a file input 【发布时间】:2019-03-08 01:43:52 【问题描述】:

这是 Chrome 的问题还是我做错了什么?我注意到,如果我使用文件输入元素来显示文件浏览器/相机提示,然后使用会导致警告消息的内容进行跟进,它会锁定整个页面,迫使我杀死应用程序以使事情正常工作再次。这是一个显示问题的简单 jsfiddle:

https://jsfiddle.net/etc4bxpq/

html

<input type="file">
<button id="btn">Click me</button>

JS:

document.querySelector('#btn').addEventListener('click', event => 
  alert(1);
);

点击文件输入,然后点击“单击我”按钮。警报不会触发,页面将被锁定。它似乎只发生在 ios 上的 Chrome 上。 Safari 似乎运行良好。

【问题讨论】:

你尝试过旧的 ES5 格式吗? 是的,这似乎无关紧要。尝试触发警报会锁定浏览器 呃,好像是iOS的bug! 【参考方案1】:

在相同条件下出现相同错误。我尝试按照一些人的建议使用 setTimeout 函数包装我的警报和提示,但它对我不起作用,尝试将输入放在另一个页面中并在 iframe 中调用它,对我也不起作用。唯一对我有用的解决方案是使用警报模式而不是本机 javascript 警报和提示功能。此外,如果您打开 chrome 设置菜单并关闭它,脚本会继续执行,这很奇怪。

【讨论】:

到目前为止,modals 也成为了我想出的解决方案,但我还是想知道为什么原生警报会导致问题(除非它实际上是 ios 浏览器的错误)。

以上是关于使用文件输入后,Javascript 警报会锁定 IOS Chrome 上的页面的主要内容,如果未能解决你的问题,请参考以下文章

Android:向活动添加锁定模式

Javascript:循环结束后的警报消息

数据输入后锁定单元格

Javascript,HP 在没有 URL 的警报后重新加载

添加断点时 Javascript 文件被锁定

是否有一个 JavaScript 函数可以确定检查哪个无线电输入并使用该无线电输入的值发出警报? [复制]