MouseEvent: initMouseEvent() method
===================================

**Deprecated:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

 The **`MouseEvent.initMouseEvent()`** method initializes the
 value of a mouse event once it's been created (normally using the `Document.createEvent()` method).

**Warning:** Do not use this method anymore as it is deprecated.

 Instead use specific event constructors, like `MouseEvent()`.
 The page on Creating and triggering events gives more information about the way to use these.


 Events initialized in this way must have been created with the `Document.createEvent()` method.
 This method must be called to set the event
 before it is dispatched, using `EventTarget.dispatchEvent()`.

Syntax
------


```js
initMouseEvent(type, canBubble, cancelable, view,
                     detail, screenX, screenY, clientX, clientY,
                     ctrlKey, altKey, shiftKey, metaKey,
                     button, relatedTarget)
```

### Parameters

`type`

 the string to set the event's `type` to. Possible types
 for mouse events include: `click`, `mousedown`,
 `mouseup`, `mouseover`, `mousemove`,
 `mouseout`.


`canBubble`

whether or not the event can bubble. Sets the value of `Event.bubbles`.

`cancelable`

 whether or not the event's default action can be prevented. Sets the value of
 `Event.cancelable`.


`view`

 the event's AbstractView. You should pass the `window` object here.
 Sets the value of `UIEvent.view`.


`detail`

the event's mouse click count. Sets the value of `UIEvent.detail`.

`screenX`

 the event's screen x coordinate. Sets the value of
 `MouseEvent.screenX`.


`screenY`

 the event's screen y coordinate. Sets the value of
 `MouseEvent.screenY`.


`clientX`

 the event's client x coordinate. Sets the value of
 `MouseEvent.clientX`.


`clientY`

 the event's client y coordinate. Sets the value of
 `MouseEvent.clientY`.


`ctrlKey`

 whether or not `control` key was pressed during the Event. Sets the value
 of `MouseEvent.ctrlKey`.


`altKey`

 whether or not `alt` key was pressed during the Event. Sets the value of
 `MouseEvent.altKey`.


`shiftKey`

 whether or not `shift` key was pressed during the Event. Sets the value
 of `MouseEvent.shiftKey`.


`metaKey`

 whether or not `meta` key was pressed during the Event. Sets the value of
 `MouseEvent.metaKey`.


`button`

the event's mouse `button`.

`relatedTarget`

 the event's related EventTarget. Only used
 with some event types (e.g., `mouseover` and `mouseout`). In
 other cases, pass `null`.


### Return value

None (`undefined`).

Examples
--------

### HTML


```html
<div style="background:red; width:180px; padding:10px;">
  <div id="out"></div>
  <input type="text" />
</div>
```

### JavaScript


```js
document.body.onclick = (event) => {
  const elementTag = event.target.tagName.toLowerCase();
  document.getElementById("out").innerHTML = elementTag;
};

const simulateClick = () => {
  const event = document.createEvent("MouseEvents");
  event.initMouseEvent(
    "click",
    true,
    true,
    window,
    0,
    0,
    0,
    80,
    20,
    false,
    false,
    false,
    false,
    0,
    null,
  );
  document.body.dispatchEvent(event);
};

simulateClick();
```

### Result

Specifications
--------------

This feature is not part of any specification. It is no longer on track to becoming a standard.

Use the `MouseEvent()` constructor instead.

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `MouseEvent()` constructor, the modern
 standard way of creating a `MouseEvent`
* `Event.initEvent()` is a simpler method serving a similar purpose. It
 is also obsolete and shouldn't be used any more.