为什么浏览器即使在预加载后也多次加载音频文件?

时间:2018-06-25 18:33:21

标签: javascript html mobile-safari media preload

我正在为我们正在开发的Web App监视Safari移动网络上的网络,

enter image description here

文件被预先加载(我想这就是为什么在三行的第一行中都显示“(磁盘)”),这是safari的网络检查器中“网络”选项卡中的网络输出。

现在,我想知道为什么浏览器似乎先从磁盘加载它,然后再从URL加载两次(?)。

我看错输出了吗?

这样的预加载(在用户交互时)发生:

function preloadAudio(url)
{
  console.log("trying to preload "+ url);
  var audio = new Audio();
  loadedAudioFiles.push(audio);

  audio.addEventListener('canplaythrough', loadedAudio, false);

  audio.src = url;
  audio.load();
  audio.onerror = function failed(e)
  {
    console.log(e);
    $("#NETWORKERROR").show();
  };
}

1 个答案:

答案 0 :(得分:0)

我应该更深入地挖掘。

很难找到这个报价

  

注意:Safari 5.0和更高版本支持preload属性。 iOS上的Safari永远不会预加载。

来自:https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/AudioandVideoTagBasics/AudioandVideoTagBasics.html

尽管这句话似乎是错误的:我经常将音频文件预加载到我的系统中(在运行预加载功能后通过切断连接进行检查,然后触发声音工作)。但是Safari移动版似乎在做一些背景魔术来决定何时加载文件以及何时不加载文件。 :-(