Javascript 如何让videojs自动卸载
我目前正在Rails应用程序中使用VideoJS(每个页面上都有一个视频播放器)来显示视频,我遇到了一个非常奇怪的问题: 播放器在我访问的第一个页面上运行得非常好,但是如果我播放视频并访问另一个页面,则第一个页面上的视频将在后台继续播放,即使页面不再打开(您可以听到音频),并且您访问的页面上的视频没有正确初始化(未应用选项,这意味着无法播放视频,因为控件是一个选项)并且控制台显示Javascript 如何让videojs自动卸载,javascript,html,video.js,Javascript,Html,Video.js,我目前正在Rails应用程序中使用VideoJS(每个页面上都有一个视频播放器)来显示视频,我遇到了一个非常奇怪的问题: 播放器在我访问的第一个页面上运行得非常好,但是如果我播放视频并访问另一个页面,则第一个页面上的视频将在后台继续播放,即使页面不再打开(您可以听到音频),并且您访问的页面上的视频没有正确初始化(未应用选项,这意味着无法播放视频,因为控件是一个选项)并且控制台显示VIDEOJS:WARN:Player“Player”已初始化。将不应用选项。 如何让VideoJS在用户离开页面时自
VIDEOJS:WARN:Player“Player”已初始化。将不应用选项。
如何让VideoJS在用户离开页面时自动卸载,以及为什么它要继续播放。首先,HTML5视频播放器以前没有这样做
解决这一问题的最佳方法是让VideoJS在页面加载时手动重新加载自己吗?如果是,怎么做
注意:如果我导航到网站内的任何其他页面,视频将继续不初始化,但如果我重新加载该页面,则该页面上的视频将再次工作
注意2:结果表明,如果我单击指向另一个页面的链接,甚至不会触发onbeforeunload
javascript事件,它只会在您访问一个完全不同的网站时触发,因此我甚至不能在页面卸载时使用该事件来.dispose()
VideoJS
注意3:
.reset()
似乎也不起作用。您可以检查播放机是否已经存在并卸载它,然后重新加载它
事实上,我找到了一个相当简单而优雅的解决方案:
if (player) {player.dispose()} else {var player}
player = videojs('player', {
//options
});
var oldPlayer = document.getElementById('my-player');
videojs(oldPlayer).dispose();
首先检查播放机是否存在。如果存在,则销毁VideoJS实例。如果不存在,则创建变量。然后初始化播放机。您可以检查播放机是否已存在并卸载它,然后重新加载它 事实上,我找到了一个相当简单而优雅的解决方案:
if (player) {player.dispose()} else {var player}
player = videojs('player', {
//options
});
var oldPlayer = document.getElementById('my-player');
videojs(oldPlayer).dispose();
首先检查播放器是否存在。如果存在,则销毁VideoJS实例。如果不存在,则创建变量。然后初始化播放器。我发现这是解决方案:
if (player) {player.dispose()} else {var player}
player = videojs('player', {
//options
});
var oldPlayer = document.getElementById('my-player');
videojs(oldPlayer).dispose();
在中,我发现这是一个解决方案:
if (player) {player.dispose()} else {var player}
player = videojs('player', {
//options
});
var oldPlayer = document.getElementById('my-player');
videojs(oldPlayer).dispose();
在中,通过引用此问题: 我们可以将上述解决方案改写为以下内容:
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);
通过提及这一问题: 我们可以将上述解决方案改写为以下内容:
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);
不再工作,dispose现在销毁完整的DOM对象。不再工作,dispose现在销毁完整的DOM对象。