{ "domain": "DOM", "description": "This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object that has an id. This id can be used to get additional information on the Node, resolve it into the JavaScript object wrapper, etc. It is important that client receives DOM events only for the nodes that are known to the client. Backend keeps track of the nodes that were sent to the client and never sends the same node twice. It is client's responsibility to collect information about the nodes that were sent to the client.

Note that iframe owner elements will return corresponding document elements as their child nodes.

", "types": [ { "id": "NodeId", "type": "integer", "description": "Unique DOM node identifier." }, { "id": "BackendNodeId", "type": "integer", "description": "Unique DOM node identifier used to reference a node that may not have been pushed to the front-end." }, { "id": "Node", "type": "object", "properties": [ { "name": "nodeId", "$ref": "NodeId", "description": "Node identifier that is passed into the rest of the DOM messages as the nodeId. Backend will only push node with given id once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client." }, { "name": "nodeType", "type": "integer", "description": "Node's nodeType." }, { "name": "nodeName", "type": "string", "description": "Node's nodeName." }, { "name": "localName", "type": "string", "description": "Node's localName." }, { "name": "nodeValue", "type": "string", "description": "Node's nodeValue." }, { "name": "childNodeCount", "type": "integer", "optional": true, "description": "Child count for Container nodes." }, { "name": "children", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Child nodes of this node when requested with children." }, { "name": "attributes", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Attributes of the Element node in the form of flat array [name1, value1, name2, value2]." }, { "name": "documentURL", "type": "string", "optional": true, "description": "Document URL that Document or FrameOwner node points to." }, { "name": "baseURL", "type": "string", "optional": true, "description": "Base URL that Document or FrameOwner node uses for URL completion." }, { "name": "publicId", "type": "string", "optional": true, "description": "DocumentType's publicId." }, { "name": "systemId", "type": "string", "optional": true, "description": "DocumentType's systemId." }, { "name": "internalSubset", "type": "string", "optional": true, "description": "DocumentType's internalSubset." }, { "name": "xmlVersion", "type": "string", "optional": true, "description": "Document's XML version in case of XML documents." }, { "name": "name", "type": "string", "optional": true, "description": "Attr's name." }, { "name": "value", "type": "string", "optional": true, "description": "Attr's value." }, { "name": "frameId", "$ref": "Network.FrameId", "optional": true, "description": "Frame ID for frame owner elements." }, { "name": "contentDocument", "$ref": "Node", "optional": true, "description": "Content document for frame owner elements." }, { "name": "shadowRoots", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Shadow root list for given element host." }, { "name": "templateContent", "$ref": "Node", "optional": true, "description": "Content document fragment for template elements" } ], "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type." }, { "id": "EventListener", "type": "object", "properties": [ { "name": "type", "type": "string", "description": "EventListener's type." }, { "name": "useCapture", "type": "boolean", "description": "EventListener's useCapture." }, { "name": "isAttribute", "type": "boolean", "description": "EventListener's isAttribute." }, { "name": "nodeId", "$ref": "NodeId", "description": "Target DOMNode id." }, { "name": "handlerBody", "type": "string", "description": "Event handler function body." }, { "name": "location", "$ref": "Debugger.Location", "optional": true, "description": "Handler code location." }, { "name": "sourceName", "type": "string", "optional": true, "description": "Source script URL." }, { "name": "handler", "$ref": "Runtime.RemoteObject", "optional": true, "description": "Event handler function value." } ], "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type." }, { "id": "RGBA", "type": "object", "properties": [ { "name": "r", "type": "integer", "description": "The red component, in the [0-255] range." }, { "name": "g", "type": "integer", "description": "The green component, in the [0-255] range." }, { "name": "b", "type": "integer", "description": "The blue component, in the [0-255] range." }, { "name": "a", "type": "number", "optional": true, "description": "The alpha component, in the [0-1] range (default: 1)." } ], "description": "A structure holding an RGBA color." }, { "id": "Quad", "type": "array", "items": { "type": "number" }, "minItems": 8, "maxItems": 8, "description": "An array of quad vertices, x immediately followed by y for each point, points clock-wise." }, { "id": "HighlightConfig", "type": "object", "properties": [ { "name": "showInfo", "type": "boolean", "optional": true, "description": "Whether the node info tooltip should be shown (default: false)." }, { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." }, { "name": "paddingColor", "$ref": "RGBA", "optional": true, "description": "The padding highlight fill color (default: transparent)." }, { "name": "borderColor", "$ref": "RGBA", "optional": true, "description": "The border highlight fill color (default: transparent)." }, { "name": "marginColor", "$ref": "RGBA", "optional": true, "description": "The margin highlight fill color (default: transparent)." } ], "description": "Configuration data for the highlighting of page elements." } ], "commands": [ { "name": "getDocument", "returns": [ { "name": "root", "$ref": "Node", "description": "Resulting node." } ], "description": "Returns the root DOM node to the caller." }, { "name": "requestChildNodes", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get children for." }, { "name": "depth", "type": "integer", "optional": true, "description": "The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the entire subtree or provide an integer larger than 0." } ], "description": "Requests that children of the node with given id are returned to the caller in form of setChildNodes events where not only immediate children are retrieved, but all children down to the specified depth." }, { "name": "querySelector", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." }, { "name": "selector", "type": "string", "description": "Selector string." } ], "returns": [ { "name": "nodeId", "$ref": "NodeId", "description": "Query selector result." } ], "description": "Executes querySelector on a given node." }, { "name": "querySelectorAll", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." }, { "name": "selector", "type": "string", "description": "Selector string." } ], "returns": [ { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Query selector result." } ], "description": "Executes querySelectorAll on a given node." }, { "name": "setNodeName", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set name for." }, { "name": "name", "type": "string", "description": "New node's name." } ], "returns": [ { "name": "nodeId", "$ref": "NodeId", "description": "New node's id." } ], "description": "Sets node name for a node with given id." }, { "name": "setNodeValue", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set value for." }, { "name": "value", "type": "string", "description": "New node's value." } ], "description": "Sets node value for a node with given id." }, { "name": "removeNode", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to remove." } ], "description": "Removes node with given id." }, { "name": "setAttributeValue", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attribute for." }, { "name": "name", "type": "string", "description": "Attribute name." }, { "name": "value", "type": "string", "description": "Attribute value." } ], "description": "Sets attribute for an element with given id." }, { "name": "setAttributesAsText", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attributes for." }, { "name": "text", "type": "string", "description": "Text with a number of attributes. Will parse this text using HTML parser." }, { "name": "name", "type": "string", "optional": true, "description": "Attribute name to replace with new attributes derived from text in case text parsed successfully." } ], "description": "Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs." }, { "name": "removeAttribute", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to remove attribute from." }, { "name": "name", "type": "string", "description": "Name of the attribute to remove." } ], "description": "Removes attribute with given name from an element with given id." }, { "name": "getEventListenersForNode", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get listeners for." }, { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name for handler value. Handler value is not returned without this parameter specified." } ], "returns": [ { "name": "listeners", "type": "array", "items": { "$ref": "EventListener"}, "description": "Array of relevant listeners." } ], "description": "Returns event listeners relevant to the node." }, { "name": "getOuterHTML", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get markup for." } ], "returns": [ { "name": "outerHTML", "type": "string", "description": "Outer HTML markup." } ], "description": "Returns node's HTML markup." }, { "name": "setOuterHTML", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set markup for." }, { "name": "outerHTML", "type": "string", "description": "Outer HTML markup to set." } ], "description": "Sets node HTML markup, returns new node id." }, { "name": "performSearch", "parameters": [ { "name": "query", "type": "string", "description": "Plain text or query selector or XPath search query." }, { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "optional": true, "description": "Ids of nodes to use as starting points for the search." } ], "returns": [ { "name": "searchId", "type": "string", "description": "Unique search session identifier." }, { "name": "resultCount", "type": "integer", "description": "Number of search results." } ], "description": "Searches for a given string in the DOM tree. Use getSearchResults to access search results or cancelSearch to end this search session." }, { "name": "getSearchResults", "parameters": [ { "name": "searchId", "type": "string", "description": "Unique search session identifier." }, { "name": "fromIndex", "type": "integer", "description": "Start index of the search result to be returned." }, { "name": "toIndex", "type": "integer", "description": "End index of the search result to be returned." } ], "returns": [ { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the search result nodes." } ], "description": "Returns search results from given fromIndex to given toIndex from the sarch with the given identifier." }, { "name": "discardSearchResults", "parameters": [ { "name": "searchId", "type": "string", "description": "Unique search session identifier." } ], "description": "Discards search results from the session with the given id. getSearchResults should no longer be called for that search." }, { "name": "requestNode", "parameters": [ { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "description": "JavaScript object id to convert into node." } ], "returns": [ { "name": "nodeId", "$ref": "NodeId", "description": "Node id for given object." } ], "description": "Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of setChildNodes notifications." }, { "name": "setInspectModeEnabled", "parameters": [ { "name": "enabled", "type": "boolean", "description": "True to enable inspection mode, false to disable it." }, { "name": "highlightConfig", "$ref": "HighlightConfig", "optional": true, "description": "A descriptor for the highlight appearance of hovered-over nodes. May be omitted if enabled == false." } ], "description": "Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspect' command upon element selection." }, { "name": "highlightRect", "parameters": [ { "name": "x", "type": "integer", "description": "X coordinate" }, { "name": "y", "type": "integer", "description": "Y coordinate" }, { "name": "width", "type": "integer", "description": "Rectangle width" }, { "name": "height", "type": "integer", "description": "Rectangle height" }, { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." }, { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }, { "name": "usePageCoordinates", "type": "boolean", "optional": true, "description": "Indicates whether the provided parameters are in page coordinates or in viewport coordinates (the default)." } ], "description": "Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport." }, { "name": "highlightQuad", "parameters": [ { "name": "quad", "$ref": "Quad", "description": "Quad to highlight" }, { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." }, { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }, { "name": "usePageCoordinates", "type": "boolean", "optional": true, "description": "Indicates whether the provided parameters are in page coordinates or in viewport coordinates (the default)." } ], "description": "Highlights given quad. Coordinates are absolute with respect to the main frame viewport." }, { "name": "highlightNode", "parameters": [ { "name": "highlightConfig", "$ref": "HighlightConfig", "description": "A descriptor for the highlight appearance." }, { "name": "nodeId", "$ref": "NodeId", "optional": true, "description": "Identifier of the node to highlight." }, { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "optional": true, "description": "JavaScript object id of the node to be highlighted." } ], "description": "Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified." }, { "name": "hideHighlight", "description": "Hides DOM node highlight." }, { "name": "highlightFrame", "parameters": [ { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame to highlight." }, { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." }, { "name": "contentOutlineColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight outline color (default: transparent)." } ], "description": "Highlights owner element of the frame with given id." }, { "name": "pushNodeByPathToFrontend", "parameters": [ { "name": "path", "type": "string", "description": "Path to node in the proprietary format." } ], "returns": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node for given path." } ], "description": "Requests that the node is sent to the caller given its path. // FIXME, use XPath" }, { "name": "pushNodeByBackendIdToFrontend", "parameters": [ { "name": "backendNodeId", "$ref": "BackendNodeId", "description": "The backend node id of the node." } ], "returns": [ { "name": "nodeId", "$ref": "NodeId", "description": "The pushed node's id." } ], "description": "Requests that the node is sent to the caller given its backend node id." }, { "name": "releaseBackendNodeIds", "parameters": [ { "name": "nodeGroup", "type": "string", "description": "The backend node ids group name." } ], "description": "Requests that group of BackendNodeIds is released." }, { "name": "resolveNode", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to resolve." }, { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." } ], "returns": [ { "name": "object", "$ref": "Runtime.RemoteObject", "description": "JavaScript object wrapper for given node." } ], "description": "Resolves JavaScript node object for given node id." }, { "name": "getAttributes", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to retrieve attibutes for." } ], "returns": [ { "name": "attributes", "type": "array", "items": { "type": "string" }, "description": "An interleaved array of node attribute names and values." } ], "description": "Returns attributes for the specified node." }, { "name": "moveTo", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to drop." }, { "name": "targetNodeId", "$ref": "NodeId", "description": "Id of the element to drop into." }, { "name": "insertBeforeNodeId", "$ref": "NodeId", "optional": true, "description": "Drop node before given one." } ], "returns": [ { "name": "nodeId", "$ref": "NodeId", "description": "New id of the moved node." } ], "description": "Moves node into the new container, places it before the given anchor." }, { "name": "undo", "description": "Undoes the last performed action." }, { "name": "redo", "description": "Re-does the last undone action." }, { "name": "markUndoableState", "description": "Marks last undoable state." }, { "name": "focus", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to focus." } ], "description": "Focuses the given element." } ], "events": [ { "name": "documentUpdated", "description": "Fired when Document has been totally updated. Node ids are no longer valid." }, { "name": "setChildNodes", "parameters": [ { "name": "parentId", "$ref": "NodeId", "description": "Parent node id to populate with children." }, { "name": "nodes", "type": "array", "items": { "$ref": "Node"}, "description": "Child nodes array." } ], "description": "Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids." }, { "name": "attributeModified", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." }, { "name": "name", "type": "string", "description": "Attribute name." }, { "name": "value", "type": "string", "description": "Attribute value." } ], "description": "Fired when Element's attribute is modified." }, { "name": "attributeRemoved", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." }, { "name": "name", "type": "string", "description": "A ttribute name." } ], "description": "Fired when Element's attribute is removed." }, { "name": "inlineStyleInvalidated", "parameters": [ { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the nodes for which the inline styles have been invalidated." } ], "description": "Fired when Element's inline style is modified via a CSS property modification." }, { "name": "characterDataModified", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." }, { "name": "characterData", "type": "string", "description": "New text value." } ], "description": "Mirrors DOMCharacterDataModified event." }, { "name": "childNodeCountUpdated", "parameters": [ { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." }, { "name": "childNodeCount", "type": "integer", "description": "New node count." } ], "description": "Fired when Container's child node count has changed." }, { "name": "childNodeInserted", "parameters": [ { "name": "parentNodeId", "$ref": "NodeId", "description": "Id of the node that has changed." }, { "name": "previousNodeId", "$ref": "NodeId", "description": "If of the previous siblint." }, { "name": "node", "$ref": "Node", "description": "Inserted node data." } ], "description": "Mirrors DOMNodeInserted event." }, { "name": "childNodeRemoved", "parameters": [ { "name": "parentNodeId", "$ref": "NodeId", "description": "Parent id." }, { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has been removed." } ], "description": "Mirrors DOMNodeRemoved event." }, { "name": "shadowRootPushed", "parameters": [ { "name": "hostId", "$ref": "NodeId", "description": "Host element id." }, { "name": "root", "$ref": "Node", "description": "Shadow root." } ], "description": "Called when shadow root is pushed into the element." }, { "name": "shadowRootPopped", "parameters": [ { "name": "hostId", "$ref": "NodeId", "description": "Host element id." }, { "name": "rootId", "$ref": "NodeId", "description": "Shadow root id." } ], "description": "Called when shadow root is popped from the element." } ] }