# Module Dom_html

    module Dom_html: sig .. end

DOM HTML binding

This is a partial binding to the DOM HTML API.

## CSS style declaration

    class type cssStyleDeclaration = object .. end

## Events

    type ('a, 'b) event_listener = ('a, 'b) Dom.event_listener

The type of event listener functions. The first type parameter `'a` is the type of the target object; the second parameter `'b` is the type of the event object.

    type mouse_button =

`|` | `No_button`
`|` | `Left_button`
`|` | `Middle_button`
`|` | `Right_button`

    class type event = object .. end

    class type mouseEvent = object .. end

    class type keyboardEvent = object .. end

    class type mousewheelEvent = object .. end

    class type mouseScrollEvent = object .. end

    class type touchEvent = object .. end

    class type touchList = object .. end

    class type touch = object .. end

    class type dragEvent = object .. end

    class type dataTransfer = object .. end

    class type eventTarget = object .. end

Common properties of event target objects: `onclick`, `onkeypress`, ...

    class type popStateEvent = object .. end

    class type storageEvent = object .. end

    class type storage = object .. end

Storage

    class type hashChangeEvent = object .. end

## HTML elements

    class type nodeSelector = object .. end

    class type tokenList = object .. end

    class type element = object .. end

Properties common to all HTML elements

    class type clientRect = object .. end

Rectangular box (used for element bounding boxes)

    class type clientRectList = object .. end

    class type ['node] collection = object .. end

Collection of HTML elements

    class type htmlElement = element

    class type headElement = object .. end

    class type linkElement = object .. end

    class type titleElement = object .. end

    class type metaElement = object .. end

    class type baseElement = object .. end

    class type styleElement = object .. end

    class type bodyElement = element

    class type formElement = object .. end

    class type optGroupElement = object .. end

    class type optionElement = object .. end

    class type selectElement = object .. end

    class type inputElement = object .. end

    class type textAreaElement = object .. end

    class type buttonElement = object .. end

    class type labelElement = object .. end

    class type fieldSetElement = object .. end

    class type legendElement = object .. end

    class type uListElement = element

    class type oListElement = element

    class type dListElement = element

    class type liElement = element

    class type divElement = element

    class type paragraphElement = element

    class type headingElement = element

    class type quoteElement = object .. end

    class type preElement = element

    class type brElement = element

    class type hrElement = element

    class type modElement = object .. end

    class type anchorElement = object .. end

    class type imageElement = object .. end

    class type objectElement = object .. end

    class type paramElement = object .. end

    class type areaElement = object .. end

    class type mapElement = object .. end

    class type scriptElement = object .. end

    class type embedElement = object .. end

    class type tableCellElement = object .. end

    class type tableRowElement = object .. end

    class type tableColElement = object .. end

    class type tableSectionElement = object .. end

    class type tableCaptionElement = element

    class type tableElement = object .. end

    class type timeRanges = object .. end

    type networkState =

`|` | `NETWORK_EMPTY`
`|` | `NETWORK_IDLE`
`|` | `NETWORK_LOADING`
`|` | `NETWORK_NO_SOURCE`

    type readyState =

`|` | `HAVE_NOTHING`
`|` | `HAVE_METADATA`
`|` | `HAVE_CURRENT_DATA`
`|` | `HAVE_FUTURE_DATA`
`|` | `HAVE_ENOUGH_DATA`

    class type mediaElement = object .. end

    class type audioElement = object .. end

    class type videoElement = object .. end

## Canvas object

    type context

    val _2d_ : context

    type canvasPattern

    class type canvasElement = object .. end

    class type canvasRenderingContext2D = object .. end

    class type canvasGradient = object .. end

    class type textMetrics = object .. end

    class type imageData = object .. end

    class type canvasPixelArray = object .. end

    val pixel_get : canvasPixelArray Js.t -> int -> int

    val pixel_set : canvasPixelArray Js.t -> int -> int -> unit

    class type range = object .. end

Object representing a range *

    class type selection = object .. end

Information on current selection

## Document objects

    class type document = object .. end

    val document : document Js.t

The current document

    val getElementById : string -> element Js.t

`getElementById id` returns the element with the id `id` in the current document. It raises `Not_found` if there are no such element

## Window objects

    class type location = object .. end

Location information

    class type history = object .. end

Browser history information

    class type undoManager = object .. end

Undo manager

    class type navigator = object .. end

Navigator information

    class type screen = object .. end

    class type applicationCache = object .. end

    type interval_id

    type timeout_id

    class type window = object .. end

Specification of window objects

    val window : window Js.t

The current window

    val _requestAnimationFrame : (unit -> unit) Js.callback -> unit

Call the appropriate `requestAnimationFrame` method variant (depending on the navigator), or sleep for a short amount of time when there no such method is provided. We currently prefix the function name with as underscore as the interface of this function is not completely standardized yet. Thus, we leave the room to a function with a possibly refined type.

    class type frameSetElement = object .. end

    class type frameElement = object .. end

    class type iFrameElement = object .. end

## Event handlers

    val no_handler : ('a, 'b) event_listener

see `Dom.no_handler`

    val handler : ((#event as 'b) Js.t -> bool Js.t) ->
           ('a, 'b Js.t) event_listener

see `Dom.handler`

    val full_handler : ('a -> (#event as 'b) Js.t -> bool Js.t) ->
           ('a, 'b Js.t) event_listener

see `Dom.full_handler`

    val invoke_handler : ('a, 'b) event_listener -> 'a -> 'b -> bool Js.t

see `Dom.invoke_handler`

    val eventTarget : #event Js.t -> element Js.t

see `Dom.eventTarget`

    val eventRelatedTarget : #mouseEvent Js.t -> element Js.t Js.opt

Returns this event related target.

    module Event: sig .. end

Event types: `mousedown`, `keypress`, ...

    type event_listener_id = Dom.event_listener_id

    val addEventListener : (#eventTarget as 'a) Js.t ->
           'b Event.typ ->
           ('a Js.t, 'b) event_listener ->
           bool Js.t -> event_listener_id

Add an event listener. This function matches the `addEventListener` DOM method, except that it returns an id for removing the listener.

    val removeEventListener : event_listener_id -> unit

Remove the given event listener.

    val addMousewheelEventListener : #eventTarget Js.t ->
           (mouseEvent Js.t -> dx:int -> dy:int -> bool Js.t) ->
           bool Js.t -> event_listener_id

Add a mousewheel event listener. The callback is provided the event and the numbers of ticks the mouse wheel moved. Positive means down / right.

## Mouse event helper functions

    val buttonPressed : #mouseEvent Js.t -> mouse_button

## Position helper functions

    val eventAbsolutePosition : #mouseEvent Js.t -> int * int

Returns the absolute position of the mouse pointer.

    val elementClientPosition : #element Js.t -> int * int

Position of an element relative to the viewport

    val getDocumentScroll : unit -> int * int

Viewport top/left position

## Helper functions for creating HTML elements

    val createHtml : document Js.t -> htmlElement Js.t

    val createHead : document Js.t -> headElement Js.t

    val createLink : document Js.t -> linkElement Js.t

    val createTitle : document Js.t -> titleElement Js.t

    val createMeta : document Js.t -> metaElement Js.t

    val createBase : document Js.t -> baseElement Js.t

    val createStyle : document Js.t -> styleElement Js.t

    val createBody : document Js.t -> bodyElement Js.t

    val createForm : document Js.t -> formElement Js.t

    val createOptgroup : document Js.t -> optGroupElement Js.t

    val createOption : document Js.t -> optionElement Js.t

    val createSelect : ?_type:Js.js_string Js.t ->
           ?name:Js.js_string Js.t ->
           document Js.t -> selectElement Js.t

    val createInput : ?_type:Js.js_string Js.t ->
           ?name:Js.js_string Js.t ->
           document Js.t -> inputElement Js.t

    val createTextarea : ?_type:Js.js_string Js.t ->
           ?name:Js.js_string Js.t ->
           document Js.t -> textAreaElement Js.t

    val createButton : ?_type:Js.js_string Js.t ->
           ?name:Js.js_string Js.t ->
           document Js.t -> buttonElement Js.t

    val createLabel : document Js.t -> labelElement Js.t

    val createFieldset : document Js.t -> fieldSetElement Js.t

    val createLegend : document Js.t -> legendElement Js.t

    val createUl : document Js.t -> uListElement Js.t

    val createOl : document Js.t -> oListElement Js.t

    val createDl : document Js.t -> dListElement Js.t

    val createLi : document Js.t -> liElement Js.t

    val createDiv : document Js.t -> divElement Js.t

    val createEmbed : document Js.t -> embedElement Js.t

    val createP : document Js.t -> paragraphElement Js.t

    val createH1 : document Js.t -> headingElement Js.t

    val createH2 : document Js.t -> headingElement Js.t

    val createH3 : document Js.t -> headingElement Js.t

    val createH4 : document Js.t -> headingElement Js.t

    val createH5 : document Js.t -> headingElement Js.t

    val createH6 : document Js.t -> headingElement Js.t

    val createQ : document Js.t -> quoteElement Js.t

    val createBlockquote : document Js.t -> quoteElement Js.t

    val createPre : document Js.t -> preElement Js.t

    val createBr : document Js.t -> brElement Js.t

    val createHr : document Js.t -> hrElement Js.t

    val createIns : document Js.t -> modElement Js.t

    val createDel : document Js.t -> modElement Js.t

    val createA : document Js.t -> anchorElement Js.t

    val createImg : document Js.t -> imageElement Js.t

    val createObject : document Js.t -> objectElement Js.t

    val createParam : document Js.t -> paramElement Js.t

    val createMap : document Js.t -> mapElement Js.t

    val createArea : document Js.t -> areaElement Js.t

    val createScript : document Js.t -> scriptElement Js.t

    val createTable : document Js.t -> tableElement Js.t

    val createCaption : document Js.t -> tableCaptionElement Js.t

    val createCol : document Js.t -> tableColElement Js.t

    val createColgroup : document Js.t -> tableColElement Js.t

    val createThead : document Js.t -> tableSectionElement Js.t

    val createTfoot : document Js.t -> tableSectionElement Js.t

    val createTbody : document Js.t -> tableSectionElement Js.t

    val createTr : document Js.t -> tableRowElement Js.t

    val createTh : document Js.t -> tableCellElement Js.t

    val createTd : document Js.t -> tableCellElement Js.t

    val createSub : document Js.t -> element Js.t

    val createSup : document Js.t -> element Js.t

    val createSpan : document Js.t -> element Js.t

    val createTt : document Js.t -> element Js.t

    val createI : document Js.t -> element Js.t

    val createB : document Js.t -> element Js.t

    val createBig : document Js.t -> element Js.t

    val createSmall : document Js.t -> element Js.t

    val createEm : document Js.t -> element Js.t

    val createStrong : document Js.t -> element Js.t

    val createCite : document Js.t -> element Js.t

    val createDfn : document Js.t -> element Js.t

    val createCode : document Js.t -> element Js.t

    val createSamp : document Js.t -> element Js.t

    val createKbd : document Js.t -> element Js.t

    val createVar : document Js.t -> element Js.t

    val createAbbr : document Js.t -> element Js.t

    val createDd : document Js.t -> element Js.t

    val createDt : document Js.t -> element Js.t

    val createNoscript : document Js.t -> element Js.t

    val createAddress : document Js.t -> element Js.t

    val createFrameset : document Js.t -> frameSetElement Js.t

    val createFrame : document Js.t -> frameElement Js.t

    val createIframe : document Js.t -> iFrameElement Js.t

    val createAudio : document Js.t -> audioElement Js.t

    val createVideo : document Js.t -> videoElement Js.t

    exception Canvas_not_available

    val createCanvas : document Js.t -> canvasElement Js.t

Raises `Canvas_not_available` when canvas elements are not supported by the browser.

## Coercion functions

    val element : #Dom.element Js.t -> element Js.t

Coercion from a general DOM element to an HTML element. (Unsafe in general.)

    type taggedElement =

`|` | `A of `anchorElement Js.t``
`|` | `Area of `areaElement Js.t``
`|` | `Audio of `audioElement Js.t``
`|` | `Base of `baseElement Js.t``
`|` | `Blockquote of `quoteElement Js.t``
`|` | `Body of `bodyElement Js.t``
`|` | `Br of `brElement Js.t``
`|` | `Button of `buttonElement Js.t``
`|` | `Canvas of `canvasElement Js.t``
`|` | `Caption of `tableCaptionElement Js.t``
`|` | `Col of `tableColElement Js.t``
`|` | `Colgroup of `tableColElement Js.t``
`|` | `Del of `modElement Js.t``
`|` | `Div of `divElement Js.t``
`|` | `Dl of `dListElement Js.t``
`|` | `Embed of `embedElement Js.t``
`|` | `Fieldset of `fieldSetElement Js.t``
`|` | `Form of `formElement Js.t``
`|` | `Frameset of `frameSetElement Js.t``
`|` | `Frame of `frameElement Js.t``
`|` | `H1 of `headingElement Js.t``
`|` | `H2 of `headingElement Js.t``
`|` | `H3 of `headingElement Js.t``
`|` | `H4 of `headingElement Js.t``
`|` | `H5 of `headingElement Js.t``
`|` | `H6 of `headingElement Js.t``
`|` | `Head of `headElement Js.t``
`|` | `Hr of `hrElement Js.t``
`|` | `Html of `htmlElement Js.t``
`|` | `Iframe of `iFrameElement Js.t``
`|` | `Img of `imageElement Js.t``
`|` | `Input of `inputElement Js.t``
`|` | `Ins of `modElement Js.t``
`|` | `Label of `labelElement Js.t``
`|` | `Legend of `legendElement Js.t``
`|` | `Li of `liElement Js.t``
`|` | `Link of `linkElement Js.t``
`|` | `Map of `mapElement Js.t``
`|` | `Meta of `metaElement Js.t``
`|` | `Object of `objectElement Js.t``
`|` | `Ol of `oListElement Js.t``
`|` | `Optgroup of `optGroupElement Js.t``
`|` | `Option of `optionElement Js.t``
`|` | `P of `paramElement Js.t``
`|` | `Param of `paramElement Js.t``
`|` | `Pre of `preElement Js.t``
`|` | `Q of `quoteElement Js.t``
`|` | `Script of `scriptElement Js.t``
`|` | `Select of `selectElement Js.t``
`|` | `Style of `styleElement Js.t``
`|` | `Table of `tableElement Js.t``
`|` | `Tbody of `tableSectionElement Js.t``
`|` | `Td of `tableColElement Js.t``
`|` | `Textarea of `textAreaElement Js.t``
`|` | `Tfoot of `tableSectionElement Js.t``
`|` | `Th of `tableColElement Js.t``
`|` | `Thead of `tableSectionElement Js.t``
`|` | `Title of `titleElement Js.t``
`|` | `Tr of `tableRowElement Js.t``
`|` | `Ul of `uListElement Js.t``
`|` | `Video of `videoElement Js.t``
`|` | `Other of `element Js.t``

    val tagged : #element Js.t -> taggedElement

    val opt_tagged : #element Js.t Js.opt -> taggedElement option

    type taggedEvent =

`|` | `MouseEvent of `mouseEvent Js.t``
`|` | `KeyboardEvent of `keyboardEvent Js.t``
`|` | `MousewheelEvent of `mousewheelEvent Js.t``
`|` | `MouseScrollEvent of `mouseScrollEvent Js.t``
`|` | `PopStateEvent of `popStateEvent Js.t``
`|` | `OtherEvent of `event Js.t``

    val taggedEvent : #event Js.t -> taggedEvent

    val opt_taggedEvent : #event Js.t Js.opt -> taggedEvent option

    val stopPropagation : #event Js.t -> unit

    module CoerceTo: sig .. end