OGeek|极客世界-中国程序员成长平台

标题: javascript - 不支持来自 blob 的 Safari Audio.play() [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 18:18
标题: javascript - 不支持来自 blob 的 Safari Audio.play()

我正在尝试从 safari 的缓存中播放 m4a 文件。该错误首先发生在 iOS 上(它是 Meteor Cordova 应用程序,因此它使用 Safari Webview),然后我意识到它也可以在桌面上的 Safari 中重现。我正在使用以下代码来尝试播放音频:

LocalForage.getItem(track_id, (err, value)=>{
    if(err)
        throw err;
    //the loaded value is an arraybuffer of an m4a file
    let blob = new Blob([value]);
    let url = (window.URL || window.webkitURL || window || {}).createObjectURL(blob);
    let testAudio = new Audio(url);
    testAudio.play().then(()=>{console.log("play successful")}).catch((err)=>{console.error(err)});
});

我得到的唯一错误信息是

DOMError: NotSupportedError (Message: "This operation is not supported")

如果您对用于下载到缓存中的代码感兴趣,可以找到in my other question ,那里提供的 chrome 修复程序已经实现并且可以正常工作,但是这里的测试代码已经尽可能的简化了。



Best Answer-推荐答案


这是正常行为。 Localstorage 在隐私浏览模式下被 safari 阻止。

关于javascript - 不支持来自 blob 的 Safari Audio.play(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41064463/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) Powered by Discuz! X3.4