OpenTV Player Web HTML5

Module: dom

dom

dom.js

Members

static,constant module:dom.$

Finds a single DOM element matching selector within the optional context of another DOM element (defaulting to document).

static,constant module:dom.$$

Finds a all DOM elements matching selector within the optional context of another DOM element (defaulting to document).

Methods

staticmodule:dom.addClass(element, classToAdd){Element}

Add a class name to an element.

Name Type Description
element Element

Element to add class name to.

classToAdd string

Class name to add.

Returns:
Type Description
Element The DOM element with the added class name.

staticmodule:dom.appendContent(el, content){Element}

Normalizes and appends content to an element.

Name Type Description
el Element

Element to append normalized content to.

content module:dom~ContentDescriptor

A content descriptor value.

Returns:
Type Description
Element The element with appended normalized content.

staticmodule:dom.blockTextSelection()

Attempt to block the ability to select text.

staticmodule:dom.createEl(tagName, properties, attributes, content){Element}

Creates an element and applies properties, attributes, and inserts content.

Name Type Default Description
tagName string 'div' optional

Name of tag to be created.

properties Object {} optional

Element properties to be applied.

attributes Object {} optional

Element attributes to be applied.

content module:dom~ContentDescriptor

A content descriptor object.

Returns:
Type Description
Element The element that was created.

staticmodule:dom.emptyEl(el){Element}

Empties the contents of an element.

Name Type Description
el Element

The element to empty children from

Returns:
Type Description
Element The element with no children

staticmodule:dom.findPosition(el){module:dom~Position}

Get the position of an element in the DOM.

Uses getBoundingClientRect technique from John Resig.

Name Type Description
el Element

Element from which to get offset.

See:
Returns:
Type Description
module:dom~Position The position of the element that was passed in.

staticmodule:dom.getAttribute(el, attribute){string}

Get the value of an element's attribute.

Name Type Description
el Element

A DOM element.

attribute string

Attribute to get the value of.

Returns:
Type Description
string The value of the attribute.

staticmodule:dom.getAttributes(tag){Object}

Get an element's attribute values, as defined on the HTML tag.

Attributes are not the same as properties. They're defined on the tag or with setAttribute.

Name Type Description
tag Element

Element from which to get tag attributes.

Returns:
Type Description
Object All attributes of the element. Boolean attributes will be true or false, others will be strings.

staticmodule:dom.getBoundingClientRect(el){Object|undefined}

Identical to the native getBoundingClientRect function, but ensures that the method is supported at all (it is in all browsers we claim to support) and that the element is in the DOM before continuing.

This wrapper function also shims properties which are not provided by some older browsers (namely, IE8).

Additionally, some browsers do not support adding properties to a ClientRect/DOMRect object; so, we shallow-copy it with the standard properties (except x and y which are not widely supported). This helps avoid implementations where keys are non-enumerable.

Name Type Description
el Element

Element whose ClientRect we want to calculate.

Returns:
Type Description
Object | undefined Always returns a plain object - or undefined if it cannot.

staticmodule:dom.getPointerPosition(el, event){module:dom~Coordinates}

Get the pointer position within an element.

The base on the coordinates are the bottom left of the element.

Name Type Description
el Element

Element on which to get the pointer position on.

event EventTarget~Event

Event object.

Returns:
Type Description
module:dom~Coordinates A coordinates object corresponding to the mouse position.

staticmodule:dom.hasClass(element, classToCheck){boolean}

Check if an element has a class name.

Name Type Description
element Element

Element to check

classToCheck string

Class name to check for

Throws:
Type When
Error

Throws an error if classToCheck has white space.

Returns:
Type Description
boolean Will be true if the element has a class, false otherwise.

staticmodule:dom.insertContent(el, content){Element}

Normalizes and inserts content into an element; this is identical to appendContent(), except it empties the element first.

Name Type Description
el Element

Element to insert normalized content into.

content module:dom~ContentDescriptor

A content descriptor value.

Returns:
Type Description
Element The element with inserted normalized content.

staticmodule:dom.isEl(value){boolean}

Determines, via duck typing, whether or not a value is a DOM element.

Name Type Description
value Mixed

The value to check.

Returns:
Type Description
boolean Will be true if the value is a DOM element, false otherwise.

staticmodule:dom.isInFrame(){boolean}

Determines if the current DOM is embedded in an iframe.

Returns:
Type Description
boolean Will be true if the DOM is embedded in an iframe, false otherwise.

staticmodule:dom.isReal(){boolean}

Whether the current DOM interface appears to be real (i.e. not simulated).

Returns:
Type Description
boolean Will be true if the DOM appears to be real, false otherwise.

staticmodule:dom.isSingleLeftClick(event){boolean}

Check if an event was a single left click.

Name Type Description
event EventTarget~Event

Event object.

Returns:
Type Description
boolean Will be true if a single left click, false otherwise.

staticmodule:dom.isTextNode(value){boolean}

Determines, via duck typing, whether or not a value is a text node.

Name Type Description
value Mixed

Check if this value is a text node.

Returns:
Type Description
boolean Will be true if the value is a text node, false otherwise.

staticmodule:dom.normalizeContent(content){Array}

Normalizes content for eventual insertion into the DOM.

This allows a wide range of content definition methods, but helps protect from falling into the trap of simply writing to innerHTML, which could be an XSS concern.

The content for an element can be passed in multiple types and combinations, whose behavior is as follows:

Name Type Description
content module:dom~ContentDescriptor

A content descriptor value.

Returns:
Type Description
Array All of the content that was passed in, normalized to an array of elements or text nodes.

staticmodule:dom.prependTo(child, parent)

Insert an element as the first child node of another

Name Type Description
child Element

Element to insert

parent Element

Element to insert child into

staticmodule:dom.removeAttribute(el, attribute)

Remove an element's attribute.

Name Type Description
el Element

A DOM element.

attribute string

Attribute to remove.

staticmodule:dom.removeClass(element, classToRemove){Element}

Remove a class name from an element.

Name Type Description
element Element

Element to remove a class name from.

classToRemove string

Class name to remove

Returns:
Type Description
Element The DOM element with class name removed.

staticmodule:dom.setAttribute(el, attribute, value)

Set the value of an element's attribute.

Name Type Description
el Element

A DOM element.

attribute string

Attribute to set.

value string

Value to set the attribute to.

staticmodule:dom.setAttributes(el, attributes)

Apply attributes to an HTML element.

Name Type Description
el Element

Element to add attributes to.

attributes Object optional

Attributes to be applied.

staticmodule:dom.textContent(el, text){Element}

Injects text into an element, replacing any existing contents entirely.

Name Type Description
el Element

The element to add text content into

text string

The text content to add.

Returns:
Type Description
Element The element with added text content.

staticmodule:dom.toggleClass(element, classToToggle, predicate){Element}

Adds or removes a class name to/from an element depending on an optional condition or the presence/absence of the class name.

Name Type Description
element Element

The element to toggle a class name on.

classToToggle string

The class that should be toggled.

predicate boolean | module:dom~PredicateCallback optional

See the return value for module:dom~PredicateCallback

Returns:
Type Description
Element The element with a class that has been toggled.

staticmodule:dom.unblockTextSelection()

Turn off text selection blocking.

Type Definitions

ContentDescriptor()

This is a mixed value that describes content to be injected into the DOM via some method. It can be of the following types:

Type Description
string The value will be normalized into a text node.
Element The value will be accepted as-is.
TextNode The value will be accepted as-is.
Array A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).
Function A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.

CoordinatesObject

Represents x and y coordinates for a DOM element or mouse pointer.

Properties:
Name Type Description
x number

x coordinate in pixels

y number

y coordinate in pixels

PositionObject

Represents the position of a DOM element on the page.

Properties:
Name Type Description
left number

Pixels to the left.

top number

Pixels from the top.

PredicateCallback(element, classToToggle){boolean|undefined}

The callback definition for toggleClass.

Name Type Description
element Element

The DOM element of the Component.

classToToggle string

The className that wants to be toggled

Returns:
Type Description
boolean | undefined If true is returned, the classToToggle will be added to the element. If false, the classToToggle will be removed from the element. If undefined, the callback will be ignored.