如何让videojs自动卸载
How to get videojs to unload automatically
我目前在 Rails 应用程序(每个页面上都有一个视频播放器)中使用 VideoJS 来显示视频,我遇到了一个非常奇怪的问题:
播放器在我访问的第一个页面上运行良好,但如果我播放视频并访问另一个页面,即使页面不再打开,第一页的视频仍会在后台播放(您可以听到音频)并且您访问的页面上的视频未正确初始化(未应用选项,这意味着无法播放视频,因为控件是一个选项)并且控制台显示 VIDEOJS: WARN: Player "player" is already initialised. Options will not be applied.
当用户离开页面时如何让 VideoJS 自行卸载以及为什么它首先继续播放,HTML5 视频播放器以前没有这样做。
是让 VideoJS 在页面加载时手动重新加载自身的最佳方法吗?如果可以,那该怎么做?
注意:如果我导航到网站内的任何其他页面,视频将继续不初始化,但如果我重新加载该页面,任何页面,该页面上的视频都有效再次.
注意 2: 结果是 onbeforeunload
javascript 事件甚至不会触发,如果我单击 link 到另一个页面,它只会在您要访问一个完全不同的网站时触发,所以我什至无法在页面卸载时将其用于 .dispose()
VideoJS。
注 3: .reset()
似乎也不起作用。
您可以检查播放器是否已经存在并卸载,然后重新加载。
我实际上能够找到一个相当简单而优雅的解决方案:
if (player) {player.dispose()} else {var player}
player = videojs('player', {
//options
});
首先它会检查播放器是否存在。如果是,它会破坏 VideoJS 实例。如果没有,它会创建变量。然后它初始化播放器。
我发现这个是解决方案:
var oldPlayer = document.getElementById('my-player');
videojs(oldPlayer).dispose();
通过参考这个问题:https://github.com/videojs/video.js/issues/2904
我们可以将上面的解决方案重写成这样:
const playerId = 'video-player';
const videoOptions = {
controls: true,
sources: [{
src: 'test-file.mp4',
type: 'video/mp4',
}]
};
let player;
let players = videojs.players;
const imaOptions = { adTagUrl };
if (players && Object.keys(players).length) {
player = players[playerId];
player.dispose();
}
player = videojs(playerId,videoOptions);
player.ima(imaOptions);
我目前在 Rails 应用程序(每个页面上都有一个视频播放器)中使用 VideoJS 来显示视频,我遇到了一个非常奇怪的问题:
播放器在我访问的第一个页面上运行良好,但如果我播放视频并访问另一个页面,即使页面不再打开,第一页的视频仍会在后台播放(您可以听到音频)并且您访问的页面上的视频未正确初始化(未应用选项,这意味着无法播放视频,因为控件是一个选项)并且控制台显示 VIDEOJS: WARN: Player "player" is already initialised. Options will not be applied.
当用户离开页面时如何让 VideoJS 自行卸载以及为什么它首先继续播放,HTML5 视频播放器以前没有这样做。
是让 VideoJS 在页面加载时手动重新加载自身的最佳方法吗?如果可以,那该怎么做?
注意:如果我导航到网站内的任何其他页面,视频将继续不初始化,但如果我重新加载该页面,任何页面,该页面上的视频都有效再次.
注意 2: 结果是 onbeforeunload
javascript 事件甚至不会触发,如果我单击 link 到另一个页面,它只会在您要访问一个完全不同的网站时触发,所以我什至无法在页面卸载时将其用于 .dispose()
VideoJS。
注 3: .reset()
似乎也不起作用。
您可以检查播放器是否已经存在并卸载,然后重新加载。
我实际上能够找到一个相当简单而优雅的解决方案:
if (player) {player.dispose()} else {var player}
player = videojs('player', {
//options
});
首先它会检查播放器是否存在。如果是,它会破坏 VideoJS 实例。如果没有,它会创建变量。然后它初始化播放器。
我发现这个是解决方案:
var oldPlayer = document.getElementById('my-player');
videojs(oldPlayer).dispose();
通过参考这个问题:https://github.com/videojs/video.js/issues/2904
我们可以将上面的解决方案重写成这样:
const playerId = 'video-player';
const videoOptions = {
controls: true,
sources: [{
src: 'test-file.mp4',
type: 'video/mp4',
}]
};
let player;
let players = videojs.players;
const imaOptions = { adTagUrl };
if (players && Object.keys(players).length) {
player = players[playerId];
player.dispose();
}
player = videojs(playerId,videoOptions);
player.ima(imaOptions);