Warning: Reason support is experimental. We are looking for beta-tester and contributors.

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


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


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
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
type animation_frame_request_id
class type window = object..end

Specification of window objects

val window : window Js.t

The current window

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 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 tableCellElement Js.t | Textarea of textAreaElement Js.t | Tfoot of tableSectionElement Js.t | Th of tableCellElement 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
type timeout_id_safe
val setTimeout : (unit -> unit) -> float -> timeout_id_safe

Same as Dom_html.window##setTimeout cb ms but prevents overflow with delay greater than 24 days.

val clearTimeout : timeout_id_safe -> unit
val js_array_of_collection : 
  #element collection Js.t ->
  #element Js.t Js.js_array Js.t

Convert a Dom_html.collection to a Js array

Deprecated function.

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.

This function is deprecated. Use the requestAnimationFrame of the window object instead.