我如何通知视觉辅助用户他们的浏览器下载状态?
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 应用程序。
- 这是一个临时 cookie,因此请避免使用 maxAge 和 expires
- 还要避免 httpOnly 以便客户端 Javascript 可以访问 cookie
就是这样!
使用用于下载内容的标准锚元素,我可以拦截点击事件以通知受帮助的用户下载开始了。但是,下载完成或失败时似乎没有发送任何事件。事实上,有视力的用户可以看到浏览器 "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 应用程序。
- 这是一个临时 cookie,因此请避免使用 maxAge 和 expires
- 还要避免 httpOnly 以便客户端 Javascript 可以访问 cookie
就是这样!