我建立了一个页面来在大多数平台上播放HLS内容,默认情况下使用HTML5视频+ HLS.js,如果不支持MSE,则回退到播放器(Grind Player)的Flash版本。
当用户切换到另一个标签或另一个程序时,我正在尝试停止播放视频标签。阅读类似问题的一些答案后,我使用下面的代码:
function PauseVideo() {
if (isFlashPlayerUsed) {
var isPlaying = player.getPlaying();
AddLog("player.playing: " + isPlaying);
if (isPlaying)
player.pause();
}
else {
AddLog("player.paused: " + player.paused);
if (!player.paused)
player.pause();
}
}
$(window).on("blur", function (e) {
AddLog("window.blur fired.");
PauseVideo();
});
$(window).on("focusout", function (e) {
AddLog("window.focusout fired.");
PauseVideo();
});
$(document).on("visibilityChange", function (e) {
AddLog("document.visibilityChange fired.");
if (document.visibilityState == "hidden")
PauseVideo();
});
但是,我发现在Windows 7的Internet Explorer 11中,使用了Flash版本的Player,并且即使我在同一页面中单击了播放器本身,也单击了window.blur会触发该事件,但是播放器聚焦,我单击了另一个程序。
即使使用Flash播放器版本,如何确保在窗口或选项卡失去焦点时视频始终会暂停?