alert 方法恐怕是 Javascript 中使用得最多的方法了——它可以被用于多方面:开发时的调试、向用户提示信息、向用户发现警告……一些网站甚至每做一个操作就使用这种手段来通过用户一次:拿一个最常见的登录过程来说,用户发起登录请求时,alert 用于验证用户的输入,用于登录成功或失败,用于网页请求失败,等等。不错啊,这 alert 确实十分好用。其调用也十分简单,一个参数,甚至由于 Javascript 本身的自由性,连这仅有的参数还可以不传!
于是乎,多少网页制作入门者在对 Javascript 其实还一知半解的时候就对 alert 的用法了如指掌;多少开发者为了向用户展示其正在为用户工作而没事就 alert 一下以示自己的程序多么强大;多少恶意攻击者使用 alert 为拦截网页的处理过程、非法获取网页中的数据——而最重要的一环:亲爱的用户们,多少用户就在这几年中忙于点击弹窗上的按钮——一点就是几年,花去了宝贵的工夫。
你还不知道 alert 吗?呵呵,那你就太 out 了!路边打酱油的人都知道了,地球人都知道了!还不赶紧了解一下去?
是啊,我其实并不想说 alert 的坏处!毕竟它也是 Javascript 中少数的非常棒的方法中的成员。可如你所见,它太坏了,我不说说,实在是不快啊!
首先,alert 被大量的滥用了!alert 的设计初衷从它的英文意思就可见一斑:“警报”。这意味着,它的用途是在重要的环节来向用户发现警报,以通知用户已经发生或者即将发生的事情将带来的相对坏的结果。由此可见,设计者并不希望使用它的开发者用它来胡乱地扰乱用户,可很少有人看到这一点。
然后,alert 本身的形式也有些过于简单了——它只包含一个信息区和一个可供点击的按钮,连消息的标题栏也不让定制。其实简单在大多数情况下并不能说是缺点,在很多情况下反而应该说它是一个优点吧。这其实是由其“警报”的本质决定的,如果真用在警报上,我觉得这特点没什么不可以的。偏偏 alert 在大多数情况下却将没有用来发现警报,那这个特点就显得有些值得诟病了。!
再次,alert 掠夺了用户的权利:这样一个简洁无比的东西,偏偏它有一个比这简单更简单却更令人郁闷的特点:当 alert 出现时,用户必须来处理这个消息,否则其他一切事务对于用户来说将变成可望而不可及的事。alert 出现就夺走了用户处理其他事情的权利!本来我们的目的就只是想要给用户一个通知,一条信息就行,为什么迫使用户必须点这个“确认”呢?这难道不是一种霸权和不尊重人的表现吗?
最后,alert 暂停了程序的执行,从而增加了程序运行的成本。如果用户由于各种原因而未能及时处理 alert 消息,这意味着程序就此永久停止——永远也不会继续——直到用户回到电脑旁来回就这一个消息。你难道不觉得这有些荒唐可笑么?程序又不是需要向用户询问一个选择,完全可以在用户一段时间之后仍没有回应时继续执行之后的代码嘛!好了,你可能反驳我说如果消息特别重要呢?这种情况也很好处理,你不是有 Log 吗?为什么不记录?
聪明的你也许还想到了其他更多用于反对 alert 的地方,也欢迎你在下边的评论栏写出你的感想。不过我想,只需上面列举的几条已经足以将 alert 彻底地否定了!
让我们与 alert 说再见吧!
那然后呢?有办法通知用户要通知的消息吗?当然有!不少人都在用QQ空间,如果稍加注意就知道它的提示很人性化,是在窗口中间出现一个长条以显示要提示的信息并在数秒之后自动消失。这就是一种比较可取的做法。而且可以想象,其实现原理与技术并不复杂:仅使用了脚本来创建新的元素,设置元素的样式与内容,然后将其添加到页面中并设置令其消失的时间——一切就都搞定了!
是啊,我这么一说,你会发现原来一切如此简单!那么,为什么不开始行动呢?