Package org.htmlunit.html

# Class HtmlScript

java.lang.Object
org.htmlunit.html.DomNode
org.htmlunit.html.DomNamespaceNode
org.htmlunit.html.DomElement
org.htmlunit.html.HtmlElement
org.htmlunit.html.HtmlScript

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `ScriptElement`, `Element`, `Node`

public class HtmlScript extends HtmlElement implements ScriptElement
Wrapper for the HTML element "script".
When a script tag references an external script (with attribute src) it gets executed when the node is added to the DOM tree. When the script code is nested, it gets executed when the text node containing the script is added to the HtmlScript.
The ScriptFilter feature of NekoHtml can't be used because it doesn't allow immediate access to the DOM (i.e. `document.write("<span id='mySpan'/>"); document.getElementById("mySpan").tagName;` can't work with a filter).

See Also:
  - DOM Level 1
  - DOM Level 2
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class org.htmlunit.html.HtmlElement

  `HtmlElement.DisplayStyle`

  ## Nested classes/interfaces inherited from class org.htmlunit.html.DomElement

  `DomElement.ChildElementsIterator`

  ## Nested classes/interfaces inherited from class org.htmlunit.html.DomNode

  `DomNode.ChildIterator, DomNode.DescendantDomElementsIterator, DomNode.DescendantDomNodesIterator, DomNode.DescendantElementsIterator<T extends DomNode>, DomNode.DescendantHtmlElementsIterator`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `TAG_NAME`
  The HTML tag represented by this element.

  ### Fields inherited from class org.htmlunit.html.HtmlElement

  `ATTRIBUTE_CHECKED, ATTRIBUTE_HIDDEN, ATTRIBUTE_REQUIRED, TAB_INDEX_OUT_OF_BOUNDS`

  ### Fields inherited from class org.htmlunit.html.DomElement

  `ATTRIBUTE_NOT_DEFINED, ATTRIBUTE_VALUE_EMPTY, ID_ATTRIBUTE, NAME_ATTRIBUTE, SRC_ATTRIBUTE, TYPE_ATTRIBUTE, VALUE_ATTRIBUTE`

  ### Fields inherited from class org.htmlunit.html.DomNode

  `PROPERTY_ELEMENT, READY_STATE_COMPLETE, READY_STATE_INTERACTIVE, READY_STATE_LOADED, READY_STATE_LOADING, READY_STATE_UNINITIALIZED`

  ### Fields inherited from interface org.w3c.dom.Node

  `ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final String`
  `getCharsetAttribute()`
  Returns the value of the attribute `charset`.
  `HtmlElement.DisplayStyle`
  `getDefaultStyleDisplay()`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Returns the default display style.
  `final String`
  `getDeferAttribute()`
  Returns the value of the attribute `defer`.
  `final String`
  `getEventAttribute()`
  Returns the value of the attribute `event`.
  `final String`
  `getHtmlForAttribute()`
  Returns the value of the attribute `for`.
  `final String`
  `getLanguageAttribute()`
  Returns the value of the attribute `language`.
  `final String`
  `getScriptCharset()`
  `final String`
  `getScriptSource()`
  `final String`
  `getSrcAttribute()`
  Returns the value of the attribute `src`.
  `final String`
  `getTypeAttribute()`
  Returns the value of the attribute `type`.
  `boolean`
  `isDeferred()`
  Returns `true` if this script is deferred.
  `protected boolean`
  `isEmptyXmlTagExpanded()`
  Indicates if a node without children should be written in expanded form as XML (i.e. with closing tag rather than with "/>")
  `boolean`
  `isExecuted()`
  Returns if executed.
  `void`
  `markAsCreatedByDomParser()`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Marks this script as created by javascript.
  `boolean`
  `mayBeDisplayed()`
  Returns `true` if nodes of this type can ever be displayed, `false` otherwise.
  `void`
  `onAllChildrenAddedToPage(boolean postponed)`
  Executes the `onreadystatechange` handler, as well as executing the script itself, if necessary.
  `protected void`
  `printChildrenAsXml(String indent, PrintWriter printWriter)`
  Recursively writes the XML data for the node tree starting at `node`.
  `void`
  `processImportNode(org.htmlunit.javascript.host.dom.Document doc)`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Lifecycle method to support special processing for js method importNode.
  `void`
  `resetExecuted()`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Resets the executed flag.
  `protected void`
  `setAttributeNS(String namespaceURI, String qualifiedName, String attributeValue, boolean notifyAttributeChangeListeners, boolean notifyMutationObservers)`
  If setting the `src` attribute, this method executes the new JavaScript if necessary (behavior varies by browser version).
  `void`
  `setExecuted(boolean executed)`
  Sets if executed.
  `String`
  `toString()`
  Returns a string representation of this object.
  `boolean`
  `wasCreatedByDomParser()`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Returns true if this frame was created by javascript.

  ### Methods inherited from class org.htmlunit.html.HtmlElement

  `acceptChar, addHtmlAttributeChangeListener, appendChildIfNoneExists, checkChildHierarchy, cloneNode, detach, doType, doType, fireHtmlAttributeAdded, fireHtmlAttributeRemoved, fireHtmlAttributeReplaced, getCanonicalXPath, getElementsByAttribute, getEnclosingElement, getEnclosingForm, getEnclosingFormOrDie, getLangAttribute, getNodeName, getOnClickAttribute, getOnDblClickAttribute, getOneHtmlElementByAttribute, getOnKeyDownAttribute, getOnKeyPressAttribute, getOnKeyUpAttribute, getOnMouseDownAttribute, getOnMouseMoveAttribute, getOnMouseOutAttribute, getOnMouseOverAttribute, getOnMouseUpAttribute, getSrcAttributeNormalized, getTabIndex, getTextDirectionAttribute, getXmlLangAttribute, handles, hasEventHandlers, isAltPressed, isAttributeCaseSensitive, isCtrlPressed, isDisplayed, isHidden, isOptional, isRequired, isRequiredSupported, isShiftPressed, isSubmittableByEnter, isValid, notifyAttributeChangeListeners, removeAttribute, removeChild, removeHtmlAttributeChangeListener, setAttributeNode, setHidden, setHidden, setOwningForm, setRequired, type, type, type, type, typeDone`

  ### Methods inherited from class org.htmlunit.html.DomElement

  `blur, click, click, click, click, click, dblClick, dblClick, doClickFireChangeEvent, doClickFireClickEvent, doClickStateUpdate, fireEvent, fireEvent, focus, getAttribute, getAttributeDirect, getAttributeNode, getAttributeNodeNS, getAttributeNS, getAttributes, getAttributesMap, getChildElementCount, getChildElements, getElementsByTagName, getElementsByTagNameNS, getEventTargetElement, getFirstElementChild, getId, getLastElementChild, getNodeType, getSchemaTypeInfo, getStaticElementsByTagName, getStyleElement, getStyleElementCaseInSensitive, getStyleMap, getTagName, hasAttribute, hasAttributeNS, hasAttributes, isDisabledElementAndDisabled, isMouseOver, isStateUpdateFirst, matches, mouseDown, mouseDown, mouseMove, mouseMove, mouseOut, mouseOut, mouseOver, mouseOver, mouseUp, mouseUp, preventDefault, printOpeningTagContentAsXml, printXml, propagateClickStateUpdateToParent, removeAttributeNode, removeAttributeNS, removeFocus, removeStyleAttribute, replaceStyleAttribute, rightClick, rightClick, setAttribute, setAttributeNodeNS, setAttributeNS, setDefaults, setId, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setInnerHtml, setNodeValue, writeStyleToElement`

  ### Methods inherited from class org.htmlunit.html.DomNamespaceNode

  `getLocalName, getLowercaseName, getNamespaceURI, getPrefix, getQualifiedName, setPrefix`

  ### Methods inherited from class org.htmlunit.html.DomNode

  `addCharacterDataChangeListener, addDomChangeListener, appendChild, asNormalizedText, asXml, basicRemove, closest, compareDocumentPosition, fireCharacterDataChanged, fireNodeAdded, fireNodeDeleted, getAncestors, getBaseURI, getByXPath, getByXPath, getChildNodes, getChildren, getDescendants, getDomElementDescendants, getEndColumnNumber, getEndLineNumber, getFeature, getFirstByXPath, getFirstByXPath, getFirstChild, getHtmlElementDescendants, getHtmlPageOrNull, getIndex, getLastChild, getNextElementSibling, getNextSibling, getNodeValue, getOwnerDocument, getPage, getParentNode, getPreviousElementSibling, getPreviousSibling, getReadyState, getScriptableObject, getSelectorList, getStartColumnNumber, getStartLineNumber, getTextContent, getUserData, getVisibleText, hasChildNodes, hasFeature, insertBefore, insertBefore, isAncestorOf, isAncestorOfAny, isAttachedToPage, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, notifyIncorrectness, onAddedToDocumentFragment, onAddedToPage, parseHtmlSnippet, querySelector, querySelectorAll, quietlyRemoveAndMoveChildrenTo, remove, removeAllChildren, removeCharacterDataChangeListener, removeChild, removeDomChangeListener, replace, replaceChild, setEndLocation, setParentNode, setReadyState, setScriptableObject, setStartLocation, setTextContent, setUserData`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface org.w3c.dom.Node

  `appendChild, compareDocumentPosition, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setPrefix, setTextContent, setUserData`

- ## Field Details

  - ### TAG_NAME

    public static final String TAG_NAME
    The HTML tag represented by this element.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### getCharsetAttribute

    public final String getCharsetAttribute()
    Returns the value of the attribute `charset`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Returns:
      the value of the attribute `charset` or an empty string if that attribute isn't defined.

  - ### getScriptCharset

    public final String getScriptCharset()
    Specified by:
      `getScriptCharset` in interface `ScriptElement`
    Returns:
      the charset used for the script encoding

  - ### getTypeAttribute

    public final String getTypeAttribute()
    Returns the value of the attribute `type`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Returns:
      the value of the attribute `type` or an empty string if that attribute isn't defined.

  - ### getLanguageAttribute

    public final String getLanguageAttribute()
    Returns the value of the attribute `language`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Returns:
      the value of the attribute `language` or an empty string if that attribute isn't defined.

  - ### getSrcAttribute

    public final String getSrcAttribute()
    Returns the value of the attribute `src`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Returns:
      the value of the attribute `src` or an empty string if that attribute isn't defined.

  - ### getScriptSource

    public final String getScriptSource()
    Specified by:
      `getScriptSource` in interface `ScriptElement`
    Returns:
      the script source url

  - ### getEventAttribute

    public final String getEventAttribute()
    Returns the value of the attribute `event`.
    Returns:
      the value of the attribute `event`

  - ### getHtmlForAttribute

    public final String getHtmlForAttribute()
    Returns the value of the attribute `for`.
    Returns:
      the value of the attribute `for`

  - ### getDeferAttribute

    public final String getDeferAttribute()
    Returns the value of the attribute `defer`. Refer to the HTML 4.01 documentation for details on the use of this attribute.
    Returns:
      the value of the attribute `defer` or an empty string if that attribute isn't defined.

  - ### isDeferred

    public boolean isDeferred()
    Returns `true` if this script is deferred.
    Specified by:
      `isDeferred` in interface `ScriptElement`
    Returns:
      `true` if this script is deferred

  - ### mayBeDisplayed

    public boolean mayBeDisplayed()
    Returns `true` if nodes of this type can ever be displayed, `false` otherwise. Examples of nodes that can never be displayed are `<head>`, `<meta>`, `<script>`, etc.
    Overrides:
      `mayBeDisplayed` in class `DomNode`
    Returns:
      `true` if nodes of this type can ever be displayed, `false` otherwise
    See Also:
      - `DomNode.isDisplayed()`

  - ### setAttributeNS

    protected void setAttributeNS(String namespaceURI, String qualifiedName, String attributeValue, boolean notifyAttributeChangeListeners, boolean notifyMutationObservers)
    If setting the `src` attribute, this method executes the new JavaScript if necessary (behavior varies by browser version). Sets the value of the attribute specified by namespace and qualified name.
    Overrides:
      `setAttributeNS` in class `HtmlElement`
    Parameters:
      `namespaceURI` - the URI that identifies an XML namespace
      `qualifiedName` - the qualified name (prefix:local) of the attribute
      `attributeValue` - the value of the attribute
      `notifyAttributeChangeListeners` - to notify the associated `HtmlAttributeChangeListener`s
      `notifyMutationObservers` - to notify `MutationObserver`s or not

  - ### onAllChildrenAddedToPage

    public void onAllChildrenAddedToPage(boolean postponed)
    Executes the `onreadystatechange` handler, as well as executing the script itself, if necessary. Lifecycle method invoked after a node and all its children have been added to a page, during parsing of the HTML. Intended to be overridden by nodes which need to perform custom logic after they and all their child nodes have been processed by the HTML parser. This method is not recursive, and the default implementation is empty, so there is no need to call `super.onAllChildrenAddedToPage()` if you implement this method.
    Overrides:
      `onAllChildrenAddedToPage` in class `DomNode`
    Parameters:
      `postponed` - whether to use `PostponedAction` or no

  - ### isEmptyXmlTagExpanded

    protected boolean isEmptyXmlTagExpanded()
    Indicates if a node without children should be written in expanded form as XML (i.e. with closing tag rather than with "/>")
    Overrides:
      `isEmptyXmlTagExpanded` in class `DomElement`
    Returns:
      `true` to make generated XML readable as HTML

  - ### printChildrenAsXml

    protected void printChildrenAsXml(String indent, PrintWriter printWriter)
    Recursively writes the XML data for the node tree starting at `node`.
    Overrides:
      `printChildrenAsXml` in class `DomNode`
    Parameters:
      `indent` - white space to indent child nodes
      `printWriter` - writer where child nodes are written

  - ### resetExecuted

    public void resetExecuted()
    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
    Resets the executed flag.
    See Also:
      - `processImportNode(Document)`

  - ### processImportNode

    public void processImportNode(org.htmlunit.javascript.host.dom.Document doc)
    Description copied from class: `DomNamespaceNode`
    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
    Lifecycle method to support special processing for js method importNode.
    Overrides:
      `processImportNode` in class `DomNamespaceNode`
    Parameters:
      `doc` - the import target document
    See Also:
      - `Document.importNode(org.htmlunit.javascript.host.dom.Node, boolean)`
      - `processImportNode(org.htmlunit.javascript.host.dom.Document)`

  - ### toString

    public String toString()
    Returns a string representation of this object.
    Overrides:
      `toString` in class `DomElement`
    Returns:
      a string representation of this object

  - ### getDefaultStyleDisplay

    public HtmlElement.DisplayStyle getDefaultStyleDisplay()
    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
    Returns the default display style.
    Overrides:
      `getDefaultStyleDisplay` in class `HtmlElement`
    Returns:
      the default display style

  - ### markAsCreatedByDomParser

    public void markAsCreatedByDomParser()
    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
    Marks this script as created by javascript. Spec: The following scripts will not execute: scripts in XMLHttpRequest's responseXML documents, scripts in DOMParser-created documents, scripts in documents created by XSLTProcessor's transformToDocument feature, and scripts that are first inserted by a script into a Document that was created using the createDocument() API
    Specified by:
      `markAsCreatedByDomParser` in interface `ScriptElement`

  - ### wasCreatedByDomParser

    public boolean wasCreatedByDomParser()
    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
    Returns true if this frame was created by javascript.
    Specified by:
      `wasCreatedByDomParser` in interface `ScriptElement`
    Returns:
      true or false

  - ### isExecuted

    public boolean isExecuted()
    Returns if executed.
    Specified by:
      `isExecuted` in interface `ScriptElement`
    Returns:
      if executed

  - ### setExecuted

    public void setExecuted(boolean executed)
    Sets if executed.
    Specified by:
      `setExecuted` in interface `ScriptElement`
    Parameters:
      `executed` - if executed