Package org.htmlunit.html

# Class HtmlImage

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

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

public class HtmlImage extends HtmlElement
Wrapper for the HTML element "img".

See Also:
  - 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.
  `static final String`
  `TAG_NAME2`
  Another 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
  `Page`
  `click()`
  Simulates clicking this element at the position `(0, 0)`.
  `Page`
  `click(int x, int y)`
  Simulates clicking this element at the specified position.
  `protected boolean`
  `doClickStateUpdate(boolean shiftKey, boolean ctrlKey)`
  Performs the click action on the enclosing A tag (if any).
  `void`
  `doOnLoad()`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  `ScriptResult`
  `fireEvent(org.htmlunit.javascript.host.event.Event event)`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Fires the event on the element.
  `final String`
  `getAlignAttribute()`
  Returns the value of the attribute `align`.
  `final String`
  `getAltAttribute()`
  Returns the value of the attribute `alt`.
  `final String`
  `getBorderAttribute()`
  Returns the value of the attribute `border`.
  `HtmlElement.DisplayStyle`
  `getDefaultStyleDisplay()`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Returns the default display style.
  `int`
  `getHeight()`
  Returns the image's actual height (not the image's `height attribute`).
  `final String`
  `getHeightAttribute()`
  Returns the value of the attribute `height`.
  `int`
  `getHeightOrDefault()`
  Returns the value same value as the js height property.
  `final String`
  `getHspaceAttribute()`
  Returns the value of the attribute `hspace`.
  `org.htmlunit.platform.image.ImageData`
  `getImageData()`
  `final String`
  `getIsmapAttribute()`
  Returns the value of the attribute `ismap`.
  `String`
  `getLocalName()`
  `final String`
  `getLongDescAttribute()`
  Returns the value of the attribute `longdesc`.
  `final String`
  `getNameAttribute()`
  Returns the value of the attribute `name`.
  `String`
  `getOriginalQualifiedName()`
  Returns the original element qualified name, this is needed to differentiate between `img` and `image`.
  `String`
  `getSrc()`
  Returns the value of the `src` value.
  `final String`
  `getSrcAttribute()`
  Returns the value of the attribute `src`.
  `final String`
  `getUseMapAttribute()`
  Returns the value of the attribute `usemap`.
  `final String`
  `getVspaceAttribute()`
  Returns the value of the attribute `vspace`.
  `WebResponse`
  `getWebResponse(boolean downloadIfNeeded)`
  Returns the `WebResponse` for the image contained by this image element.
  `int`
  `getWidth()`
  Returns the image's actual width (not the image's `width attribute`).
  `final String`
  `getWidthAttribute()`
  Returns the value of the attribute `width`.
  `int`
  `getWidthOrDefault()`
  Returns the value same value as the js width property.
  `boolean`
  `isComplete()`
  `boolean`
  `isDisplayed()`
  Returns `true` if this node is displayed and can be visible to the user (ignoring screen size, scrolling limitations, color, font-size, or overlapping nodes).
  `void`
  `markAsCreatedByJavascript()`
  INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
  Marks this frame as created by javascript.
  `protected void`
  `onAddedToPage()`
  Lifecycle method invoked whenever a node is added to a page.
  `void`
  `onload()`
  `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`
  `saveAs(File file)`
  Saves this image as the specified file.
  `protected void`
  `setAttributeNS(String namespaceURI, String qualifiedName, String value, boolean notifyAttributeChangeListeners, boolean notifyMutationObservers)`
  Sets the value of the attribute specified by namespace and qualified name.
  `boolean`
  `wasCreatedByJavascript()`
  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, 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, dblClick, dblClick, doClickFireChangeEvent, doClickFireClickEvent, 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, isEmptyXmlTagExpanded, 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, toString, writeStyleToElement`

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

  `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, mayBeDisplayed, normalize, notifyIncorrectness, onAddedToDocumentFragment, onAllChildrenAddedToPage, parseHtmlSnippet, printChildrenAsXml, 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, 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

  - ### TAG_NAME2

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

- ## Method Details

  - ### onAddedToPage

    protected void onAddedToPage()
    Lifecycle method invoked whenever a node is added to a page. Intended to be overridden by nodes which need to perform custom logic when they are added to a page. This method is recursive, so if you override it, please be sure to call `super.onAddedToPage()`.
    Overrides:
      `onAddedToPage` in class `DomNode`

  - ### setAttributeNS

    protected void setAttributeNS(String namespaceURI, String qualifiedName, String value, boolean notifyAttributeChangeListeners, boolean notifyMutationObservers)
    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
      `value` - the value of the attribute
      `notifyAttributeChangeListeners` - to notify the associated `HtmlAttributeChangeListener`s
      `notifyMutationObservers` - to notify `MutationObserver`s or not

  - ### processImportNode

    public 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.
    Overrides:
      `processImportNode` in class `DomNamespaceNode`
    Parameters:
      `doc` - the import target document
    See Also:
      - `Document.importNode(org.htmlunit.javascript.host.dom.Node, boolean)`
      - `HtmlScript.processImportNode(org.htmlunit.javascript.host.dom.Document)`

  - ### doOnLoad

    public void doOnLoad()

    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.

    Executes this element's `onload` or `onerror` handler. This method downloads the image if either of these handlers are present (prior to invoking the resulting handler), because applications sometimes use images to send information to the server and use these handlers to get notified when the information has been received by the server.

    See here and here for the discussion which lead up to this method.

    This method may be called multiple times, but will only attempt to execute the `onload` or `onerror` handler the first time it is invoked.

  - ### 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

  - ### getSrc

    public String getSrc()
    Returns the value of the `src` value.
    Returns:
      the value of the `src` value

  - ### getAltAttribute

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

  - ### getNameAttribute

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

  - ### getLongDescAttribute

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

  - ### getHeightAttribute

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

  - ### getWidthAttribute

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

  - ### getUseMapAttribute

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

  - ### getIsmapAttribute

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

  - ### getAlignAttribute

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

  - ### getBorderAttribute

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

  - ### getHspaceAttribute

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

  - ### getVspaceAttribute

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

  - ### getHeight

    public int getHeight() throws IOException

    Returns the image's actual height (not the image's `height attribute`).

    POTENTIAL PERFORMANCE KILLER - DOWNLOADS THE IMAGE - USE AT YOUR OWN RISK

    If the image has not already been downloaded, this method triggers a download and caches the image.

    Returns:
      the image's actual height
    Throws:
      `IOException` - if an error occurs while downloading or reading the image

  - ### getHeightOrDefault

    public int getHeightOrDefault()
    Returns the value same value as the js height property.
    Returns:
      the value of the `height` property

  - ### getWidth

    public int getWidth() throws IOException

    Returns the image's actual width (not the image's `width attribute`).

    POTENTIAL PERFORMANCE KILLER - DOWNLOADS THE IMAGE - USE AT YOUR OWN RISK

    If the image has not already been downloaded, this method triggers a download and caches the image.

    Returns:
      the image's actual width
    Throws:
      `IOException` - if an error occurs while downloading or reading the image

  - ### getWidthOrDefault

    public int getWidthOrDefault()
    Returns the value same value as the js width property.
    Returns:
      the value of the `width` property

  - ### getImageData

    public org.htmlunit.platform.image.ImageData getImageData() throws IOException
    Returns:
      the `ImageData` of this image
    Throws:
      `IOException` - in case of error

  - ### getWebResponse

    public WebResponse getWebResponse(boolean downloadIfNeeded) throws IOException

    Returns the `WebResponse` for the image contained by this image element.

    POTENTIAL PERFORMANCE KILLER - DOWNLOADS THE IMAGE - USE AT YOUR OWN RISK

    If the image has not already been downloaded and `downloadIfNeeded` is `true`, this method triggers a download and caches the image.

    Parameters:
      `downloadIfNeeded` - whether or not the image should be downloaded (if it hasn't already been downloaded)
    Returns:
      `null` if no download should be performed and one hasn't already been triggered; otherwise, the response received when performing a request for the image referenced by this element
    Throws:
      `IOException` - if an error occurs while downloading the image

  - ### click

    public Page click(int x, int y) throws IOException
    Simulates clicking this element at the specified position. This only makes sense for an image map (currently only server side), where the position matters. This method returns the page contained by this image's window after the click, which may or may not be the same as the original page, depending on JavaScript event handlers, etc.
    Parameters:
      `x` - the x position of the click
      `y` - the y position of the click
    Returns:
      the page contained by this image's window after the click
    Throws:
      `IOException` - if an IO error occurs

  - ### click

    public Page click() throws IOException
    Simulates clicking this element at the position `(0, 0)`. This method returns the page contained by this image's window after the click, which may or may not be the same as the original page, depending on JavaScript event handlers, etc.
    Overrides:
      `click` in class `DomElement`
    Returns:
      the page contained by this image's window after the click
    Throws:
      `IOException` - if an IO error occurs

  - ### doClickStateUpdate

    protected boolean doClickStateUpdate(boolean shiftKey, boolean ctrlKey) throws IOException
    Performs the click action on the enclosing A tag (if any). This method implements the control state update part of the click action.

    The default implementation only calls doClickStateUpdate on parent's DomElement (if any). Subclasses requiring different behavior (like `HtmlSubmitInput`) will override this method.

    Overrides:
      `doClickStateUpdate` in class `DomElement`
    Parameters:
      `shiftKey` - `true` if SHIFT is pressed
      `ctrlKey` - `true` if CTRL is pressed
    Returns:
      true if doClickFireEvent method has to be called later on (to signal, that the value was changed)
    Throws:
      `IOException` - if an IO error occurred

  - ### saveAs

    public void saveAs(File file) throws IOException
    Saves this image as the specified file.
    Parameters:
      `file` - the file to save to
    Throws:
      `IOException` - if an IO error occurs

  - ### 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

  - ### onload

    public void onload()

  - ### isComplete

    public boolean isComplete()
    Returns:
      true if the image was successfully downloaded

  - ### isDisplayed

    public boolean isDisplayed()

    Returns `true` if this node is displayed and can be visible to the user (ignoring screen size, scrolling limitations, color, font-size, or overlapping nodes).

    NOTE: If CSS is `disabled`, this method does not take this element's style into consideration!

    Overwritten to support the hidden attribute (html5).
    Overrides:
      `isDisplayed` in class `HtmlElement`
    Returns:
      `true` if the node is visible to the user, `false` otherwise
    See Also:
      - CSS2 Visibility
      - CSS2 Display
      - MSDN Documentation
      - `DomNode.mayBeDisplayed()`

  - ### markAsCreatedByJavascript

    public void markAsCreatedByJavascript()
    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
    Marks this frame as created by javascript.

  - ### wasCreatedByJavascript

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

  - ### getOriginalQualifiedName

    public String getOriginalQualifiedName()
    Returns the original element qualified name, this is needed to differentiate between `img` and `image`.
    Returns:
      the original element qualified name

  - ### getLocalName

    public String getLocalName()
    Specified by:
      `getLocalName` in interface `Node`
    Overrides:
      `getLocalName` in class `DomNamespaceNode`

  - ### fireEvent

    public ScriptResult fireEvent(org.htmlunit.javascript.host.event.Event event)
    INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
    Fires the event on the element. Nothing is done if JavaScript is disabled.
    Overrides:
      `fireEvent` in class `DomElement`
    Parameters:
      `event` - the event to fire
    Returns:
      the execution result, or `null` if nothing is executed