javascript - 为什么我不应该在 JavaScript 中使用警报?

标签 javascript jquery alert

<分区>

我需要在某些情况下通知用户,并且发现不应使用 confirm() 和 alert()。相反,很多问题都提到在 jQuery UI 中使用模态,尤其是当您需要设置样式时。这一切都很好,很花哨,但是归根结底,编码人员说你应该远离它的原因是什么?

This是一个很好的例子来说明人们的感受,但是几乎所有其他关于设置警报框样式的问题都有相同的评论。这只是一个样式问题,还是有更根本的原因回避这个内置功能?

更重要的是,所有答案都没有讨论您应该使用什么。 jQuery UI 和类似的预建解决方案只是唯一的答案吗?为什么?是性能还是安全性还是缺乏经验的编码人员需要易于使用的东西还是...?

编辑:

好吧,让我澄清一下。我问的原因是因为警报功能是为了防止用户意外清除他们一直在做的工作,因为有三种方法可以在此页面上启动新计划,并且每种方法都会清除现有的内部 html显示计划的 div。

我听到的大多数是它对用户和 UI 不利,但是,如果引起愤怒、吸引注意力是我想要的,我应该改用什么?有人提到 alerts/confirm 会停止 JavaScript 的执行,并可能会阻止您使用其他选项卡。这更接近我预期的功能问题。我知道这对 UI 不利,但我正在寻找更多技术原因。

最佳答案

没有任何“技术原因”您不应该使用内置的浏览器方法来实现警报和确认功能。都是自以为是。

让我们把它分成两部分。

警报永远不应该用于调试除非您打算让它停止代码的执行。否则,您应该使用 console.log,因为如果您的代码涉及异步逻辑,警报实际上可以更改代码的结果。 “但是 IE 不支持 console.log!”是的,如果控制台是打开的。在生产代码中,您的调试代码无论如何都不应该存在。为了防止忘记 console.logs,只需对其进行 polyfil。对于调试以外的用途,例如通知用户发生了某些事情,通常最好使用其他方式通知用户发生了更改,例如突出显示元素或带有信息文本的横幅,但是,什么都没有 在这种情况下使用警报是错误的,只要暂停执行不会影响您的代码。

确认是询问用户“您确定吗?”的标准方式。在执行删除信息等破坏性操作之前。它很容易理解并且被许多站点使用,所以我建议您也在自己的代码中使用它。替代方案通常会导致额外的代码,给您的应用程序增加不必要的复杂性。但是请记住,confirm 也会阻止执行,因此您应该确保它不会影响您可能正在运行的任何异步逻辑。

如果您的异步代码编写正确,它通常不会受到执行暂停的影响。

关于javascript - 为什么我不应该在 JavaScript 中使用警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20359807/

相关文章:

javascript - (Angular)在我的情况下如何返回不同的 Observable 类型请求?

javascript - 为什么再次悬停时下拉菜单动画会削高?

javascript - 使用母版页避免 Javascript 中的重复

php - 用于警报功能的 php javascript 与字符串之间的连接

javascript - 如何通过 JavaScript 显示错误消息?

javascript - 使用CSS过渡时如何更改父div的高度?

javascript - 在 $.extend 中包含 "-"从 jquery

javascript - JQuery Mobile 会干扰 Javascript 还是格式问题?

swift - Xcode 警报样式,Swift 3

javascript - 悬停时显示特定的向下滚动图标?