标签:firefox event-handling alert javascript jquery
在最新的Firefox上,使用jQuery的on change事件中的alert()对话框无法关闭(我单击“确定”,但没有任何反应*).在Internet Explorer上,警报显示一次,可以关闭.
似乎单击警报会(重新)触发Firefox上输入字段中的更改事件,但我不确定,因为不会显示控制台日志消息.
$('input#i').on('keyup change', function(e) {
e.preventDefault();
console.log('alert ...');
alert(1); // can't be closed on Firefox
return false;
});
完整的JavaScript小提琴:https://jsfiddle.net/powtac/w1md0bdd/
在Win 7的Firefox 52.0.1(64位)和Win 7的IE 11上进行了测试.
* =至少我不知道是否发生了什么.弹出窗口保持在相同位置.可以单击该按钮,这是样式更改.我测试了使用键盘(Enter)和鼠标单击“确定”来消除警报.两种情况都没有删除警报窗口.
更新:
铝在这个答案中https://stackoverflow.com/a/43052301/22470找到了解决方案和解释.简而言之:用keydown代替keyup.由于这仍然不能解释仅使用鼠标时的行为,因此我进行了一些进一步的测试,并注意到警报看起来有所不同:
在无法删除弹出窗口的糟糕用例中,它看起来像:
使用Al.G的修复程序或删除事件之一时,代码正在侦听它,如下所示:
这可能表明该警报尚未完全绘制,并且已经显示了另一个弹出窗口,或者某些东西正在阻止呈现.
解决方法:
把我的评论作为答案:
实际上,“确定”按钮并未禁用.您可以单击它并关闭提示,但是:
>关闭警报,因此关键焦点将返回到保留警报的前一个元素,即输入元素.
>之后,您释放钥匙.
由于输入元素具有焦点,因此您可以在其上触发键入事件.
>您附加的同一keyup事件函数将再次执行.转到步骤1
标签:firefox,event-handling,alert,javascript,jquery 来源: https://codeday.me/bug/20191026/1934055.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。