我如何通知视觉辅助用户他们的浏览器下载状态?

How do I inform visual assisted users about the status of their browser download?

使用用于下载内容的标准锚元素,我可以拦截点击事件以通知受帮助的用户下载开始了。但是,下载完成或失败时似乎没有发送任何事件。事实上,有视力的用户可以看到浏览器 "Download complete popup",但盲人用户完全看不到。

上下文是 Chromebook/Chrome/ChromeVox

HTML 片段:

<a id=asdf download href="http://50.18.90.151/scv/audio/3510b90ced0e914f83c81d8f03e47c01">
   download sound file</a>
<script>
    var elt = document.getElementById('asdf');
    console.log('Adding listeners', elt);
    elt.addEventListener('click', (evt) => {
        console.log('Starting download');
    });
    elt.addEventListener('load', (evt) => {
        console.log('This never gets called');
    });
</script>

我已经尝试了以下所有事件并且 none 触发了: elt.addEventListener('close', (evt) => { elt.addEventListener('complete', (evt) => { elt.addEventListener('data', (evt) => { elt.addEventListener('downloading', (evt) => { elt.addEventListener('ended', (evt) => { elt.addEventListener('end', (evt) => { elt.addEventListener('loadend', (evt) => { elt.addEventListener('load', (evt) => { elt.addEventListener('message', (evt) => { elt.addEventListener('progress', (evt) => { elt.addEventListener('statechange', (evt) => { elt.addEventListener('storage', (evt) => { │ => elt.addEventListener('success', (evt) => { elt.addEventListener('writeend', (evt) => { elt.addEventListener('end', (evt) => {

感谢@jdv 指出了一个相关的post,它确认没有下载完成的浏览器事件。

解决方案是让服务器下载处理程序 return 一个会话 cookie,例如 "download-date"。处理响应后,cookie 值将更改,并且 Javascript 可用于根据需要更新 Web 应用程序。

  1. 这是一个临时 cookie,因此请避免使用 maxAgeexpires
  2. 还要避免 httpOnly 以便客户端 Javascript 可以访问 cookie

就是这样!