菜鸟教程小白 发表于 2022-12-11 18:18:48

javascript - 不支持来自 blob 的 Safari Audio.play()


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

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

<p>我得到的唯一错误信息是</p>

<pre><code>DOMError: NotSupportedError (Message: &#34;This operation is not supported&#34;)
</code></pre>

<p>如果您对用于下载到缓存中的代码感兴趣,可以找到<a href="https://stackoverflow.com/questions/40750143/android-url-createobjecturl-does-not-work-properly-failed-to-load-because-no-s/40870837#40870837" rel="noreferrer noopener nofollow">in my other question</a> ,那里提供的 chrome 修复程序已经实现并且可以正常工作,但是这里的测试代码已经尽可能的简化了。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这是正常行为。 Localstorage 在隐私浏览模式下被 safari 阻止。</p></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - 不支持来自 blob 的 Safari Audio.play(),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/41064463/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/41064463/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - 不支持来自 blob 的 Safari Audio.play()