API Index

ClickableComponent

Clickable Component which is clickable or keyboard actionable, but is not a native HTML button

DEFINED IN: clickable-component.js line number: 12

EXTENDS: component.js

Constructor

ClickableComponent( player,[options] )

Parameters

name Type Required Description
player Object yes Main Player
options Object no Object of option names and values

Methods

addChild( child, [options] )

Adds a child component inside this clickable-component

Parameters

name Type Required Description
child String|Component yes The class name or instance of a child to add
options Object no Options, including options to be passed to children of the child.

Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 112

[back to top]

controlText( el )

create control text

Parameters

name Type Required Description
el Element yes Parent element for the control text

Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 65

[back to top]

createEl( [type], [props], [attributes] )

Create the component's DOM element

Parameters

name Type Required Description
type String no Element's node type. e.g. 'div'
props Object no An object of properties that should be set on the element
attributes Object no An object of attributes that should be set on the element

Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 33

[back to top]

handleClick()

Handle Click - Override with specific functionality for component

Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 132

[back to top]

handleFocus()

Handle Focus - Add keyboard functionality to element

Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 139

[back to top]

handleKeyPress()

Handle KeyPress (document level) - Trigger click when Space or Enter key is pressed

Defined in https://github.com/videojs/video.js/blob/master/src/js/clickable-component.js line number: 148

[back to top]

$( selector, [context] )

Finds a single DOM element matching selector within the component's contentEl or another custom context.

Parameters

name Type Required Description
selector String yes A valid CSS selector, which will be passed to querySelector .
context Element|String no A DOM element within which to query. Can also be a selector string in which case the first matching element will be used as context. If missing (or no element matches selector), falls back to document .

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 841

[back to top]

$$( selector, [context] )

Finds a all DOM elements matching selector within the component's contentEl or another custom context.

Parameters

name Type Required Description
selector String yes A valid CSS selector, which will be passed to querySelectorAll .
context Element|String no A DOM element within which to query. Can also be a selector string in which case the first matching element will be used as context. If missing (or no element matches selector), falls back to document .

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 861

[back to top]

addClass( classToAdd )

Add a CSS class name to the component's element

Parameters

name Type Required Description
classToAdd String yes Classname to add

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 892

[back to top]

children()

Get an array of all child components

    var kids = myComponent.children();

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 282

[back to top]

clearInterval( intervalId )

Clears an interval and removes the associated dispose listener

Parameters

name Type Required Description
intervalId Number yes The id of the interval to clear

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1295

[back to top]

clearTimeout( timeoutId )

Clears a timeout and removes the associated dispose listener

Parameters

name Type Required Description
timeoutId Number yes The id of the timeout to clear

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1252

[back to top]

contentEl()

Return the component's DOM element where children are inserted. Will either be the same as el() or a new element defined in createEl().

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 245

[back to top]

dimensions( width, height )

Set both width and height at the same time

Parameters

name Type Required Description
width Number|String yes Width of player
height Number|String yes Height of player

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1015

[back to top]

dispose()

Dispose of the component and all child components

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 101

[back to top]

el()

Get the component's DOM element

    var domEl = myComponent.el();

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 195

[back to top]

enableTouchActivity()

Report user touch activity when touch events occur User activity is used to determine when controls should show/hide. It's relatively simple when it comes to mouse events, because any mouse event should show the controls. So we capture mouse events that bubble up to the player and report activity when that happens. With touch events it isn't as easy. We can't rely on touch events at the player level, because a tap (touchstart + touchend) on the video itself on mobile devices is meant to turn controls off (and on). User activity is checked asynchronously, so what could happen is a tap event on the video turns the controls off, then the touchend event bubbles up to the player, which if it reported user activity, would turn the controls right back on. (We also don't want to completely block touch events from bubbling up) Also a touchmove, touch+hold, and anything other than a tap is not supposed to turn the controls back on on a mobile device. Here we're setting the default component behavior to report user activity whenever touch events happen, and this can be turned off by components that want touch events to act differently.

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1174

[back to top]

static extend( props ) (deprecated)

Sets up the constructor using the supplied init method or uses the init of the parent object

Parameters

name Type Required Description
props Object yes An object of properties

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1350

[back to top]

getChild()

Returns a child component with the provided name

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 305

[back to top]

getChildById()

Returns a child component with the provided ID

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 295

[back to top]

static getComponent( name )

Gets a component by name

Parameters

name Type Required Description
name String yes Name of the component to get

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1331

[back to top]

hasClass( classToCheck )

Check if a component's element has a CSS class name

Parameters

name Type Required Description
classToCheck String yes Classname to check

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 881

[back to top]

height( num, [skipListeners] )

Get or set the height of the component (CSS values) Setting the video tag dimension values only works with values in pixels. Percent values will not work. Some percents can be used, but width()/height() will return the number + %, not the actual computed width/height.

Parameters

name Type Required Description
num Number|String yes New component height
skipListeners Boolean no Skip the resize event trigger

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 998

[back to top]

initChildren()

Add and initialize default child components from options

    // when an instance of MyComponent is created, all children in options
    // will be added to the instance by their name strings and options
    MyComponent.prototype.options_ = {
      children: [
        'myChildComponent'
      myChildComponent: {
        myChildOption: true
    // Or when creating the component
    var myComp = new MyComponent(player, {
      children: [
        'myChildComponent'
      myChildComponent: {
        myChildOption: true
    });

The children option can also be an array of child options objects (that also include a 'name' key). This can be used if you have two child components of the same type that need different options.

    var myComp = new MyComponent(player, {
      children: [
        'button',
          name: 'button',
          someOtherOption: true
          name: 'button',
          someOtherOption: false
    });

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 455

[back to top]

name()

Get the component's name. The name is often used to reference the component.

    var name = myComponent.name();

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 269

[back to top]

off( first, second, [third] )

Remove an event listener from this component's element

    myComponent.off('eventType', myFunc);

If myFunc is excluded, ALL listeners for the event type will be removed. If eventType is excluded, ALL listeners will be removed from the component. Alternatively you can use off to remove listeners that were added to other elements or components using myComponent.on(otherComponent... . In this case both the event type and listener function are REQUIRED.

    myComponent.off(otherElement, 'eventType', myFunc);
    myComponent.off(otherComponent, 'eventType', myFunc);

Parameters

name Type Required Description
first String|Component yes The event type or other component
second function|String yes The listener function or event type
third function no The listener for other component

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 680

[back to top]

on( first, second, third )

Add an event listener to this component's element

    var myFunc = function(){
      var myComponent = this;
      // Do something when the event is fired
    myComponent.on('eventType', myFunc);

The context of myFunc will be myComponent unless previously bound. Alternatively, you can add a listener to another element or component.

    myComponent.on(otherElement, 'eventName', myFunc);
    myComponent.on(otherComponent, 'eventName', myFunc);

The benefit of using this over VjsEvents.on(otherElement, 'eventName', myFunc) and otherComponent.on('eventName', myFunc) is that this way the listeners will be automatically cleaned up when either component is disposed. It will also bind myComponent as the context of myFunc. NOTE : When using this on elements in the page other than window and document (both permanent), if you remove the element from the DOM you need to call myComponent.trigger(el, 'dispose') on it to clean up references to it and allow the browser to garbage collect it.

Parameters

name Type Required Description
first String|Component yes The event type or other component
second function|String yes The event handler or event type
third function yes The event handler

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 605

[back to top]

one( first, second, [third] )

Add an event listener to be triggered only once and then removed

    myComponent.one('eventName', myFunc);

Alternatively you can add a listener to another element or component that will be triggered only once.

    myComponent.one(otherElement, 'eventName', myFunc);
    myComponent.one(otherComponent, 'eventName', myFunc);

Parameters

name Type Required Description
first String|Component yes The event type or other component
second function|String yes The listener function or event type
third function no The listener function for other component

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 728

[back to top]

options( obj )

Deep merge of options objects Whenever a property is an object on both options objects the two properties will be merged using mergeOptions.

    Parent.prototype.options_ = {
      optionSet: {
        'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },
        'childTwo': {},
        'childThree': {}
    newOptions = {
      optionSet: {
        'childOne': { 'foo': 'baz', 'abc': '123' }
        'childTwo': null,
        'childFour': {}
    this.options(newOptions);

RESULT

optionSet: { 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' }, 'childTwo': null, // Disabled. Won't be initialized. 'childThree': {}, 'childFour': {} }

Parameters

name Type Required Description
obj Object yes Object of new option values

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 145

[back to top]

ready( fn, sync )

Bind a listener to the component's ready state. Different from event listeners in that if the ready event has already happened it will trigger the function immediately.

Parameters

name Type Required Description
fn function yes Ready listener
sync Boolean yes Exec the listener synchronously if component is ready

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 787

[back to top]

static registerComponent( name, comp )

Registers a component

Parameters

name Type Required Description
name String yes Name of the component to register
comp Object yes The component to register

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1314

[back to top]

removeChild( component )

Remove a child component from this component's list of children, and the child component's element from this component's element

Parameters

name Type Required Description
component Component yes Component to remove

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 415

[back to top]

removeClass( classToRemove )

Remove a CSS class name from the component's element

Parameters

name Type Required Description
classToRemove String yes Classname to remove

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 904

[back to top]

setInterval( fn, interval )

Creates an interval and sets up disposal automatically.

Parameters

name Type Required Description
fn function yes The function to run every N seconds.
interval Number yes Number of ms to delay before executing specified function.

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1271

[back to top]

setTimeout( fn, timeout )

Creates timeout and sets up disposal automatically.

Parameters

name Type Required Description
fn function yes The function to run after the timeout.
timeout Number yes Number of ms to delay before executing specified function.

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 1227

[back to top]

toggleClass( classToToggle, [predicate] )

Add or remove a CSS class name from the component's element

Parameters

name Type Required Description
classToToggle String
predicate Boolean|function no Can be a function that returns a Boolean. If true , the class will be added; if false , the class will be removed. If not given, the class will be added if not present and vice versa.

Defined in https://github.com/videojs/video.js/blob/master/src/js/component.js line number: 916

[back to top]

trigger( event, [hash] )

Trigger an event on an element

    myComponent.trigger('eventName');
    myComponent.trigger({'type':'eventName'});