使用 Web 音频进行表单验证

Avatar of Ruth John
Ruth John

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 $200 免费积分!

我一直在思考网站上的**声音**。

当我们谈论在网站上使用声音时,我们大多数人都会皱眉,想起过去网站加载时播放的刺耳背景音乐。

今天,这已经不再是,也不需要成为一种现象。我们可以巧妙地运用声音。我们现在有了Web 音频 API,它让我们能够很好地控制如何在 Web 应用程序中设计声音。

在这篇文章中,我们将尝试一个简单的例子:**一个表单**。

如果在填写表单时,它除了提供视觉反馈外,还提供听觉反馈呢?我能看到你们在皱眉!但请给我一点时间。

我们已经在使用的数字产品中拥有大量的听觉反馈。手机上的键盘会发出敲击声。即使您关闭了“消息已收到”的声音,您也很有可能听到手机振动。我的 MacBook 在我重启时会发出声音,游戏主机也是如此。听觉反馈无处不在,并且已经很好地集成,以至于我们并没有真正考虑它。您上次什么时候因为微波炉的蜂鸣声而皱眉?我敢打赌您很高兴不用盯着它就能知道它什么时候做好了。

当我写这篇文章的时候,我的电脑正好发出蜂鸣声。我打开的一个标签页给我发送了一个有用的通知。我的意思是声音可以很有用。我们可能并不都需要用耳朵来判断我们是否正确填写了表单,但可能有很多人会发现它很有帮助。

所以我要尝试一下!

为什么现在?我们现在拥有了触手可及的能力。我已经提到了Web 音频 API,我们可以使用它来创建/加载和播放声音。将它与HTML 表单验证功能结合起来,我们应该就可以开始了。

让我们从一个简单的表单开始。

这是一个简单的注册表单。

查看示例 简单表单 by Chris Coyier (@chriscoyier) on CodePen.

我们可以使用非常强大的验证功能来连接这个表单。

利用从 Chris Ferdinandi 的表单验证指南中学到的所有知识,这里有一个带有验证功能的表单版本。

查看示例 带验证功能的简单表单 by Chris Coyier (@chriscoyier) on CodePen.

准备声音

我们不希望听到令人讨厌的刺耳声音,但我们确实希望这些声音能够代表成功和失败。一个简单的方法是使用更高、更明亮的声音,向上代表成功,使用更低、更失真 的声音,向下代表失败。这仍然给了我们非常广泛的选择,但这是一个通用的声音设计模式。

使用Web 音频 API,我们可以在浏览器中创建声音。以下是播放正面和负面声音的小函数示例。

查看示例 创建声音 by Chris Coyier (@chriscoyier) on CodePen.

这些是使用振荡器创建声音的示例,这很酷,因为它不需要任何 Web 请求。您实际上是在编写声音代码。这有点像声音世界的 SVG。它可能很有趣,但它可能需要很多工作和很多代码。

当我玩这个想法时,Facebook 发布了他们的SoundKit,它是

为了帮助设计师探索声音如何影响他们的设计,Facebook 设计团队创建了一系列用于原型交互的声音。

以下是从中选择一些声音并播放它们的示例。

查看示例 播放声音文件 by Chris Coyier (@chriscoyier) on CodePen.

另一种方法是获取声音文件并使用audioBufferSourceNode。由于我们使用的是小文件,因此这里没有太多开销,但是上面的演示会在每次播放时从网络上获取文件。如果我们将声音放在缓冲区中,就不必这样做。

弄清楚何时播放声音

将声音添加到表单的这个实验引发了许多关于在界面中使用声音的 UX 问题。

到目前为止,我们有两个声音,一个正面/成功声音和一个负面/失败声音。很明显,我们会播放这些声音来提醒用户这些情况。但具体在什么时候呢?

以下是一些思考的问题:

  • 我们是为所有人播放声音,还是用户可以选择?选择退出?是否有可以用来确定默认设置的 API 或媒体查询?
  • 我们是在表单提交时播放成功和失败的声音,还是在单个输入级别播放?或者甚至是在组/字段集/页面级别播放?
  • 如果我们为每个输入播放声音,我们应该在什么时候播放?在blur事件中吗?
  • 我们是否在每次blur事件中播放声音?成功和失败声音的逻辑是否不同,例如只播放一次失败声音,直到它被修正?

对于这些问题,还没有非常确定的最佳实践。我们所能做的就是做出明智的选择并进行用户研究。**也就是说,这篇文章中的示例只是想法,而不是金科玉律。**

演示

这里有一个!

查看演示

这里还有一个带有声音的工作视频

语音

Greg Genovese 有一篇关于表单验证和屏幕阅读器的文章。“阅读器”在这里很重要,因为这完全是关于音频的!我们可以用 aria 角色、移动焦点等方法来确保错误信息清晰,并且明确如何修正它们。

Web 音频 API 也可以在其中发挥作用,或者更可能的是Web 语音 API。表单验证的音频反馈并不局限于屏幕阅读器软件。尝试朗读实际的错误信息,也许与我们在这里尝试的其他的声音结合起来,肯定会很有趣。

想法

所有这些都属于我所谓的**Web 设计中的声音设计**。这不仅仅是播放音乐和声音,而是像对待设计和构建的任何其他方面一样,对声音环境进行思考、规划和设计。

关于这个主题还有很多话要说,还有很多方法可以将声音应用到您的设计中。让我们谈谈它!