今天遇到一个让我非常恼火的问题,相信大家一定也遇到过,当你再网页的表单中填写了很多内容,突然不小心关闭了页面或者点到了链接页面跳转导致编写的内容全部丢失,就比如你编写了半天的word没保存直接关闭了一样,想象一下这个瞬间的心情。
另外震惊的是很多站点竟然没有做这方面的优化,当面对一个令人崩溃的网页表单时,那种输入内容至半途却意外丢失的沮丧感,无疑是对耐心与信任的双重打击。
突然之间,页面卡顿、刷新等意外情况的发生,导致之前所有的努力仿佛瞬间蒸发,只留下空白的表单和一脸茫然的自己。这种体验不仅打断了工作流程,更消磨了用户的耐心与热情,让人不禁质疑网站的专业性与可靠性。优化表单设计,确保数据即时保存与恢复功能,对于提升用户体验是非常的关键的。
如何优化表单输入体验
梳理一下表单会丢失数据情况,对于我们解决这个问题十分的关键。一般来说常见的情况:页面跳转、页面刷新、页面关闭、浏览器或系统崩溃。
对于页面跳转、页面刷新、页面关闭这三种情况是比较好控制处理的,都是属于浏览器的操作,只要检测这些行为,并中断操作提示用户确认即可。但是对于浏览器和系统崩溃则是超出了浏览器操作的范畴,可能就需要将内容及时再服务器或者是再浏览器中创建副本。
解决方案一
window.onbeforeunload = function(event) {
// 对于大多数浏览器来说,直接设置 returnValue 或返回字符串会触发默认的确认对话框
// 但自定义文本可能不会显示,或者只显示默认的文本(如“离开此页面?”)
var message = "您确定要离开此页面吗?潘某人SEO(chateach.com)";
event.returnValue = message; // 兼容老版本浏览器
return message; // 兼容现代浏览器
};
2
3
4
5
6
7
如上图分别是页面刷新和关闭或离开页面时,可以实现弹窗提醒用户确认,既可以避免用户误关闭页面和发生跳转的时候导致表单内容的丢失。
onbeforeunload事件:这是最常用的方法之一,通过监听这个事件,可以在用户尝试刷新或关闭页面时弹出确认对话框,从而给用户一个机会来取消他们的操作。然而,这种方法的主要缺点是它会在所有导致页面卸载的操作中触发,包括正常的链接跳转、表单提交等,这可能会给用户带来不必要的干扰。因此,一定只要必要的位置和条件下使用,避免对用户其他的正常操作造成干扰反而造成不良用户体验。
解决方案二
对于浏览器或者系统奔溃的时候,这种方法就无效了,依然会导致内容的丢失,这个时候潘某人SEO认为,可以每间隔一定时间或者是新增输入多少内容的时候,将表单输入的内容进行缓存副本。
缓存的位置可以是再浏览器的localstorage中,但是对于一些敏感性的输入内容,缓存再数据库对于隐私数据保护会更加的友好。