Javascript Safari在删除src并调用load()后不会停止下载媒体

Javascript Safari在删除src并调用load()后不会停止下载媒体,javascript,safari,html5-audio,Javascript,Safari,Html5 Audio,暂停HTML媒体元素后,浏览器将继续下载媒体 MDN描述了如何通过删除媒体元素的src属性并调用HTMLMEDIALEMENT.load():,停止下载 在Safari中,这不足以阻止媒体继续下载。在Web Inspector网络选项卡中,可以看到传输正在继续。尽管支持load()方法,并且在调用该方法时发送了相应的事件,但仍然存在这种情况。(见附件。) 例如,使用以下示例并监控网络,您应该能够看到Safari中的行为与Chrome中的不同 <audio controls prelo

暂停HTML媒体元素后,浏览器将继续下载媒体

MDN描述了如何通过删除媒体元素的
src
属性并调用
HTMLMEDIALEMENT.load()
:,停止下载

在Safari中,这不足以阻止媒体继续下载。在Web Inspector网络选项卡中,可以看到传输正在继续。尽管支持
load()
方法,并且在调用该方法时发送了相应的事件,但仍然存在这种情况。(见附件。)

例如,使用以下示例并监控网络,您应该能够看到Safari中的行为与Chrome中的不同

<audio
   controls preload="none" type="audio/mpeg"
   src="http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p"
/>

<script>
    const mediaEl = document.querySelector('audio');

    mediaEl.addEventListener('abort', (e) => {
        console.log('abort', e.target);
    });
    mediaEl.addEventListener('emptied', (e) => {
        console.log('emptied', e.target);
    });
    mediaEl.addEventListener('pause', (e) => {
        e.target.removeAttribute('src');
        e.target.load();
    });
</script>
有没有办法在Safari中解决这个问题并停止媒体元素发起的下载

我的用例涉及一个音频流。我不希望浏览器在用户停止播放后继续缓冲。

我也有同样的问题。

我发现的唯一好的解决方法是将音频标记放在单独的html中,并将其加载到iframe中,然后添加一个事件侦听器,在流暂停时重新加载音频标记的页面。

Thx!我应该用不同的措辞。我分享了我的解决方法,但也想知道OP想出了什么解决方案(如果有的话);我错过了你在那里有一个解决办法。我重新编写了你的答案,删除了那个部分,因为它可能会让你的答案也被其他人标记。如果OP有一个决议,我们希望他们能在这里分享,但答案是错误的。然而,一旦你获得50%的声誉,你可以发表评论:)很抱歉开头不顺利,欢迎来到StackOverflow\o/
mediaEl.addEventListener('pause', (e) => {
    e.target.parentNode.removeChild(e.target);
});