Hooks exist so that users can “hook” on to certain video.js player lifecycle
Currently, the following hooks are avialable:
beforesetup
is called just before the player is created. This allows:
videojs('some-id, options)
)beforesetup
hook functions should:
Example: adding beforesetup hook
var beforeSetup = function(videoEl, options) {
// videoEl.id will be some-id here, since that is what video.js
// was created with
videoEl.className += ' some-super-class';
// autoplay will be true here, since we passed in as such
(options.autoplay) {
options.autoplay = false
}
// options that are returned here will be merged with old options
// in this example options will now be
// {autoplay: false, controls: true}
return options;
};
videojs.hook('beforesetup', beforeSetup);
videojs('some-id', {autoplay: true, controls: true});
setup
is called just after the player is created. This allows:
setup
hook functions:
Example: adding setup hook
var setup = function(player) {
// initialize the foo plugin
player.foo();
};
var foo = function() {};
videojs.plugin('foo', foo);
videojs.hook('setup', setup);
var player = videojs('some-id', {autoplay: true, controls: true});
In order to use hooks you must first include video.js in the page or script that you are using. Then you add hooks using videojs.hook(<name>, function)
before running the videojs()
function.
Example: adding hooks
videojs.hook('beforesetup', function(videoEl, options) {
// videoEl will be the element with id=vid1
// options will contain {autoplay: false}
});
videojs.hook('setup', function(player) {
// player will be the same player that is defined below
// as `var player`
});
var player = videojs('vid1', {autoplay: false});
After adding your hooks they will automatically be run at the correct time in the video.js lifecycle.
To access the array of hooks that currently exists and will be run on the video.js object you can use the videojs.hooks
function.
Example: getting all hooks attached to video.js
var beforeSetupHooks = videojs.hooks('beforesetup');
var setupHooks = videojs.hooks('setup');
To stop hooks from being executed during the video.js lifecycle you will remove them using videojs.removeHook
.
Example: remove a hook that was defined by you
var beforeSetup = function(videoEl, options) {};
// add the hook
videojs.hook('beforesetup', beforeSetup);
// remove that same hook
videojs.removeHook('beforesetup', beforeSetup);
You can also use videojs.hooks
in conjunction with videojs.removeHook
but it may have unexpected results if used during an asynchronous callbacks as other plugins/functionality may have added hooks.
Example: using videojs.hooks
and videojs.removeHook
to remove a hook
// add the hook
videojs.hook('setup', function(videoEl, options) {});
var setupHooks = videojs.hooks('setup');
// remove the hook you just added
videojs.removeHook('setup', setupHooks[setupHooks.length - 1]);