想多做那就多想想

有一些带input的页面,会用js帮助将foucs设置到第一个input,如登录页面的用户名;我自己也干过这样的事,所以我知道这样的开发人员的心理(一般这么细节的地方未必是产品的需求,也许是前端自己的心血来潮),理想状态下,用户过来,焦点到第一个input去,这样甚至不用自己鼠标点击一下input,就可以直接输入,听起来很nice的“用户体验”。

事实是,当以下几种情况只要遇上一样,体验就会变得很奇怪,我们先说情况:

  1. 静态文件加载不够快

  2. js执行时间人为延后,如body load之后,有的极端情况会等一些异步的请求结束了才开始执行

  3. 整体js太臃肿,执行效率低

唔,这样的结果就是(亲身体验不止一次):

我过来登录页面,这时候浏览器帮我把用户名填好了,好的,我直接点击密码的input,开始输入密码。

但是,不对,我输密码输一半,嗯,js跑到之前说的那了,然后我的光标就到用户名那边去了。然后就是我接着输的密码就光明正大地在用户名后边接上了。

是的,就是这样的问题,一方面这样的js行为并没有简化我的操作,反而增加了复杂度;另一方面让我的密码有部分泄露的风险,要是这会有人在看我的屏幕呢?

所以这事吧,出发点是好的,归根结底是js不稳定的运行环境导致的,不能怪咱。

不过如果多考虑一点,在做这样的“额外服务”时,也许我们就会这样做:

js判断当前是否有input处于focus状态,若有,就不要画蛇添足了;若没有,帮助用户把焦点转移到你希望的地方。