JunChen Wu / 设计

费解的确定和取消

写于 2008年03月06日 14:28 评论(12)

对待重要数据的保存,我们可能会在外部事件引起的窗口关闭之前触发 onclose 事件,于是:

确定和取消

当询问“是否取消”的时候,我是该按“确定”还是“取消”?从 Gmail 这个例子里,“确定”表示“是,要取消”,“取消”表示“否,不取消”。

问题是,随机问了几个人,都理解为按“取消”,表示“是啊,我是真的要取消”。

第一个 confirm 窗口是 Gmail 为了保存草稿而设计的(不能调整两个按钮的文案)。而第二个弹出窗口,则是浏览器自带的(在某些情况下弹出),也没办法调整内容或者确定、取消的执行命令。

于是整个流程就变成以下三种情况:

  • “确定” —— 中断,执行外部事件
  • “取消”“确定”—— 中断,执行外部事件
  • “取消”“取消”—— 不中断,忽略外部事件

为了保证不丢失数据,看来只有 33% 的几率。问题是,当你按了第一次取消后,第二次还敢按取消的可能性有多少?尤其是说明文字也那么的费解。万恶的浏览器!(FF 和 IE 在这点上倒是出奇的一致)

暂且不讨论去掉第二个弹出窗口这个技术性的解决方案。对待 Web-based Apps 重要数据的保存中断,有什么更好的设计方案么?(不停地保存草稿?呵呵。)

Warm Regards,
J.

原文地址:http://www.junchenwu.com/2008/03/ok_or_cancle.html

评论(12)

稻草 - 2008年03月06日 17:01

junchen说的那个我一度也会点"取消",
点完发现没有反应?
才知道我点错了.

英文版本里的“discard your message”比较容易理解 ^ ^

关于好的设计方案没有想到合适的:)
不过gmail的自动保存功能挺好的(时间不知道是多久..)
而且在写邮件的时.
按ctrl+s 也是保存为草稿
比较符合office习惯

swanky.wu - 2008年03月06日 17:36

这个设计的确有问题, 其实就像windows的回收站那样, 当删除一个文件时
问是否需要删除, 但选了是, 其实也没删, 我可以从回收站中恢复过来, 但可是谁如果真的是要删一个文件又会点否呢(点错了的忽略掉)

我觉得像google自定义首页一样设计了就好了: 删除了或取消了, 就什么也不问直接删除或取消; 而是在之后告诉用户已经删除或取消了, 但是可以"撤销"刚才的操作.

swanky.wu - 2008年03月06日 17:38

不过这依旧难以解决直接进行"浏览器直接操作"的问题...

JerryJorn - 2008年03月06日 19:43

关于“确定”、“取消”之说,放佛很久以前就是这样了,很少发生过变化。

我们并没有思考过为什么那两个答案是“确定”和“取消”,我想是我们照搬了老美的“Enter”和"Cancel"……

在现代的互联网生活中,我们在做设计的同时可能会忽略一些问题,过多的思考问题,诸如“您确定取消嘛,按‘取消’,则停留在本页……”之类,而并没有认真地考虑问题的答案,特别是站在Guest的角度上没有考虑过。

JunChen - 2008年03月06日 22:23

由于 JS confirm 的确定取消按钮字面上不能调整(估计是为安全考虑),所以造成了这样那样的问题。

在 confirm 的文案上做一些调整可能会更好一些。比如 Gmail 的可以修改如下:

“您的回复邮件尚未发送,确定要停止回复该邮件?”

这样按确定或取消可能就不会产生歧义了。但仍然不能解决浏览器弹出确认取消的问题。

Leechael - 2008年03月07日 02:00

1. 当页面中的按钮或链接被点击时,使用 CSS + JavaScript 建立类似弹窗的效果。
2. 真正 unload 页面的时候才使用 confirm 弹出窗口。
3. 上述弹窗事件被激活的同时,执行自动保存。

在使用 CSS + JavaScript 建立类似弹窗的效果时,由于可设定所有的文字,感觉这个暂且算是一个解决方案。至于在迫不得已的情况下使用 confirm 弹窗,则是需要在文字的使用上斟酌一番。最后一点则是针对有可能出现的例外情况作的处理。

liuzhongshu - 2008年03月07日 13:52

是的,要么调整提示文字,要么调整按钮提示,比如第一个对话框如果用“是”,“否”来作为选项可能要好很多。

Clio Chang - 2008年03月07日 19:35

Man you don't even know how long I've waited for this since disabling my own Movable Type widget (that doesn't work since Haloscan bypasses that code).

Junyu - 2008年03月09日 05:12

Gmail 草稿的那个问题, 根源是英文的 discard 和 cancel 到了中文里面都变成了 "取消". 对话框 "确定", "取消" 这两个词的含义在中文里面也不如 "OK", "Cancel" 来的明确 --- 不止在 webapp 里头, 我自己也经常在 Photoshop 这样的 desktop app 里头想半天我是要 OK 还是 cancel, 尤其是 "OK", "Cancel" 和 "DIscard" 三个选项同时出现的时候.

如果各位有比较好的建议, 不妨告诉我们 :)

王俊煜, Google User Experience

青椒土豆丝 - 2008年03月10日 11:37

支持Leechael 的做法,我也是这么弄的,避免是使用alert和confirm,使用模拟弹出框不但可以统一视图,没有那吓人的“咚”的一声,而且可以更好的控制要提示的内容和方式,这样可以避免“您确定×××”“确定”“取消”的模式,上面的例子就可以直接改为“您回复的邮件尚未发送”,两个按钮“不发送”“发送”,这样理解的更直接,避免在“是”和“否”之间绕圈子。

JunChen - 2008年03月10日 20:15

@Leechael @青椒土豆丝
在某些情况下,是因为诸如误按了关闭按钮、其他页面强制加载等问题;而且这种情况不可忽略,所以用 Lightbox 之类就失去效用了。

fly - 2008年05月08日 18:31

产品设计师的责任还是对于浏览者的错误理解?歧义的产生必然导致用户的迷惑。
这应该让产品设计人员注意重视起来。

发表评论