Firefox iOS中JavaScript Prompt未暂停脚本的异常行为咨询
Firefox iOS(iPad端)中JavaScript prompt的非预期行为属于错误实现
按照ECMAScript及浏览器标准规范,window.prompt()是模态对话框API,触发后会弹出模态窗口,立即暂停当前脚本执行,直到用户完成交互:
- 点击「确定」:返回用户输入的内容(若未输入则返回空字符串)
- 点击「取消」:返回
null
只有在用户完成操作后,脚本才会继续执行后续代码。
你在iPad端Firefox iOS中遇到的现象完全不符合上述标准:
- 未点击「确定」时,
fill元素就被填充了prompt的默认值「Placeholder」 - 修改输入内容并点击「确定」后,无法更新
fill元素的内容
这属于浏览器的错误实现,因为prompt的核心设计就是阻塞脚本等待用户交互,而该浏览器提前返回了默认值,且未在用户确认后更新返回结果,完全违背了API的定义。
测试代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <script type="text/javascript"> function testClick(){ var data = window.prompt("Enter Some Text:", "Placeholder"); document.getElementById("fill").innerHTML = data; } </script> <body> <main> <button onclick="testClick()">Click Me</button> <div id="fill"></div> </main> </body> </html>
内容的提问来源于stack exchange,提问作者falc2
相关产品推荐
相关产品推荐

