客户在选中了第一级下拉的选项后,程序无刷新读取数据,调出了相关的数据,是一个稍微长一点的表单;
随即客户想看看页面下方查出来的东西,于是向下滚动鼠标滚轮,可是这时焦点还在第一个下拉列表上。可以想见下面发生了什么:连续发生了 n 次选择不同选项的无刷新调用。
这种行为显然不是我所想看到的。虽然可以教客户每次选择后,要在页面空白处点击一下让下拉框失去焦点,但这显然不是个友好的设计。
很自然的,我想到一个办法:禁止可能产生联动效应的那些下拉框的鼠标滚轮事件,并将焦点转移到 body 上,让滚轮变成正常的滚动页面。代码非常简单:
<select onmousewheel="window.event.returnValue = false; document.body.focus();">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
这个代码本身可以说是不值一提。现在采用 Ajax 开发越来越多,我觉得如果能总结出这方面一些小技巧,加强 Ajax 程序的用户体验,应该是有价值的。
对这方面有兴趣的朋友,请不吝指教。大家一起总结一些技巧出来。