我有一个页面,只要用户出错,它就会使用 jQuery 播放声音。
这是我的html的一部分:
<embed id="beepCache" src="sound/beep.wav" autostart="false" type ="audio/x-wav" width="0" height="0" hidden="hidden" /><!-- Just for caching! -->
我只是用它来本地缓存文件,所以它会立即播放。这是我播放声音的 jQuery 函数。它只是在 DOM 中添加和删除 embed 元素。
function playSound() {
$('body').append('<embed id="beep" width="0" height="0" type ="audio/x-wav" src="sound/beep.wav" autostart="true" hidden="hidden">');
//wait 1 sec than remove the embed element
setTimeout(function() {
$('#beep').remove();
}, 1000);
}
所以这段代码在 IE、FF 和 Opera 中工作,但它曾经在 Chrome 中工作。当它起作用时,我注意到对 beep.wav 的所有 GET 请求都是缓存命中。
但是现在我得到了状态(已取消)。我认为 Chrome 太聪明了,它注意到 embed 元素将被删除,所以它取消了对资源的请求,但事实并非如此,因为即使是我用于缓存并且永远不会删除的 embed 元素也会得到状态(已取消) - 这发生在页面加载时。
任何想法,将不胜感激。