作者:@Raymond Camden
原文:https://www.raymondcamden.com/2024/11/25/using-your-favicon-for-monitoring-long-processes
背景
Raymond Camden 在其博客中分享了一个有趣的发现:通过改变网页的 Favicon(浏览器标签页上的小图标)来监控长时间运行的进程。他在使用 Google Colab 进行测试时注意到,当笔记本开始处理数据时,Favicon 会发生变化,从而提供了一种简单而有效的用户反馈机制。
处理之前,图标看起来是这样:
启动工作流之后,图标会变成这样:
要点
通过 JavaScript 动态更改 Favicon,可以为长时间运行的进程提供实时的用户反馈,增强用户体验。
分析
技术实现
使用简单的 DOM 操作即可更改 Favicon。例如,通过 document.querySelector('link[rel="icon"]').href = 'some new url';
可以轻松地将 Favicon 替换为另一个图标。
在实际应用中,开发者可以在进程开始时将 Favicon 更改为 “工作” 状态的图标,并在进程结束时恢复为默认图标。
用户体验
代码示例
Raymond Camden 在博客中提供了一个简单的 JavaScript 代码示例,展示了如何在按钮点击后启动一个 5 秒的延迟进程,并在进程开始和结束时分别更改 Favicon。
document.addEventListener('DOMContentLoaded', init, false);
let $button;
const working_icon = 'https://cdn.glitch.global/62fb94fd-9b8f-48e0-b37c-99a051fc9fd0/favicon_working.ico?v=1732549929944';
const idle_icon = document.querySelector('link[rel="icon"]').href;
async function init() {
$button = document.querySelector('button');
$button.addEventListener('click', doSlow, false);
}
async function doSlow() {
console.log('进程开始');
$button.setAttribute('disabled', 'disabled');
document.querySelector('link[rel="icon"]').href = working_icon;
await delay(5);
console.log('进程完成');
$button.removeAttribute('disabled', 'disabled');
document.querySelector('link[rel="icon"]').href = idle_icon;
}
async function delay(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve();
}, x * 1000);
});
}
演示地址:https://gamy-lying-stork.glitch.me/
示例代码还展示了如何禁用按钮以防止用户重复触发进程,这是良好的用户体验设计。
影响
行业应用
未来趋势
结论
通过动态更改 Favicon 来监控长时间运行的进程,不仅技术实现简单,而且能够显著提升用户体验。这一技术有望在未来的 Web 应用中得到更广泛的应用,成为一种标准化的用户反馈机制。开发者应考虑将其纳入自己的应用设计中,以提供更直观、更友好的用户界面。
5 分钟技术速览:了解技术资讯的一种方式。
🚀可直接通过阅读原文了解详细内容。