Safari 不会播放来自 javascript 的音频

Safari won't play audio from javascript

我遇到一个问题,Mac 上的 Safari 在单击按钮时无法播放音频。我知道自动播放已禁用,但这是基于用户操作,所以我真的很困惑。在其他浏览器中播放正常。

在我的网页中,我使用 jquery 来动态构建页面,并且我添加了一个可以播放音频的按钮,如下所示:

var button = $('<button>', {
    id:      id + '_button',
    hidden:  'hidden',
    onclick: "preview('" + id + "')"
}).append($('<img>', {
    src: 'pb.gif',
    alt: 'Preview'
}));

然后在 preview 方法中播放声音。

function preview(rowId) {
    var url = 'ajax/preview.php?t=' + ... + '.mp3';  // Long URL build up here

    var snd = new Audio();
    snd.src = url;
    snd.play();
}

奇怪的是,对我来说,单击按钮时声音在 Safari 中播放得很好,但基本上我尝试过的其他人都说没有声音。

如果您的问题与 iPhone 相关,那么我建议检查一次 phone 左上角的静音按钮。

问题最终是服务器将 header 作为 Content-Type: $contentType 发回,而不是扩展该变量。一旦我修复它就开始工作了。