Javascript - 当用户从移动通知控件按下播放/暂停时,如何覆盖默认操作?

时间:2016-10-30 21:42:50

标签: javascript jquery html5 html5-audio

我正在组建一个用于直播音频的网站。它使用一个html音频元素和一些自定义的javascript / jquery控件来停止缓冲区并在暂停时更改按钮。

在Android上播放来自Chrome的音频时,通知中会出现播放暂停按钮。类似地,iOS设备在浏览器外部具有媒体控件。

当用户按下这些控件时,play-pause命令会直接发送到音频元素(绕过我设置的控件。)

如何截取这些命令并让它们调用我的自定义函数?

我的播放控件启动此功能:

function startAudio () {
  // add number to get var to force fresh load each time
  i++;
  $("#audioPlayer").attr("src",source + "&nocache=" + i).trigger("play");
  $("#playpause").removeClass('playing paused').addClass('loading');
  audioPaused = false;
}

我试过了:

audioElem.onplay = function() {
startAudio()
}

但正如您所料,这只会导致无限循环,因为在startAudio()中调用了play。

对于上下文:暂停时,音频源将被删除,以防止在暂停时连续加载实时流。再次启动时,通过向源URL添加一个数字来强制执行新的加载(每次递增)。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

播放和暂停活动就在这里。

audioElement.onplay = function() {
    /* trigger your customs controls */
};
audioElement.onpause = function() {
    /* trigger your customs controls */
};

来自http://www.w3schools.com/tags/av_event_pause.asp