为什么 Chrome 在音频播放时请求图标?

Wil*_*rce 4 javascript audio web-audio-api

我正在使用Audio()构造函数加载和播放音频文件。.play()这在大多数浏览器中都可以正常工作,但 Chrome 似乎每次调用时都会对网站的 favicon 发出新的 GET 请求。看起来无论文件类型如何,无论是本地文件、同一站点还是跨站点,都会发生这种情况。

它似乎还会产生大量垃圾内存。有办法防止这种情况吗?

打开 DevTools 并查看网络选项卡,同时单击以下示例中的按钮。

const bounce = new Audio('https://www.w3schools.com/graphics/bounce.mp3');

function playSound() {
    bounce.play();
}

document.getElementById('bounce').addEventListener('click', playSound, false);
Run Code Online (Sandbox Code Playgroud)
<button id="bounce">Play</button>
Run Code Online (Sandbox Code Playgroud)

And*_*bie 5

这似乎是 Chrome 中的一个已知错误,现已标记为“已修复”。然而,截至2020年9月19日,有人评论说这种情况仍在发生。

head一种可能的解决方法是在HTML 中包含一个“假”图标。例如,link下面的元素:

<!DOCTYPE html>
<html>
<head>
    <link rel="icon" href="data:,">
    ... Rest of your HTML ...
Run Code Online (Sandbox Code Playgroud)

这会为该图标分配一个空数据 URL,并应阻止 Chrome 自动为其发送 HTTP 请求。