动态加载 Brightcove 视频仅加载播放器一次

dynamically loading Brightcove videos loading the player only once

我知道可以动态加载 brightcov 播放器,如本例中的 brightcov 所示:

https://codepen.io/team/rcrooks1969/pen/JywoKE (与播放器一起创建脚本标签并实例化脚本的视频加载,类似的东西) s.src = "//players.brightcove.net/{accountID}/{playerID}_default/index.min.js"; s.onload = callback;

我正在将多个视频加载到一个页面中,所有视频都是动态加载的并使用同一个播放器。 有没有办法只加载该脚本一次并且仍然能够使用 videoJs('myPlayer')

我尝试修改示例,但 videojs 始终未定义, https://codepen.io/optionsit/pen/LBvXZm?editors=1011 (每个按钮应使用相同的播放器脚本加载不同的视频)

我也尝试过使用 Promises,但没有成功,解决对脚本 onload 事件的承诺只会解决第一个视频。

您需要等待 videojs 加载完成。只需禁用按钮,然后您就可以执行以下操作:

s.onload = function() { 
  var btns = document.getElementByTagName('button');
  for (i = 0; i < btns.length;i++) {
    btns[i].disabled = false;
  }
  // or with jQuery simply $('button').prop('disabled', false);
}

如果您将 initPlayer 函数更改为使用 bc() 函数而不是 videojs() 来初始化播放器,它将起作用。

initPlayer = function(player){
  // +++ Initialize the player and start the video +++
  myPlayer = bc(player);
  myPlayer.play();
}

我通过修改你的 CodePen 来测试这个。