Web/API/CanvasRenderingContext2D/addHitRegion

From Get docs

ObsoleteThis feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.


The CanvasRenderingContext2D method addHitRegion() adds a hit region to the bitmap.

Canvas hit regions make hit detection easy. They let you route events to DOM elements, and make it possible for users to explore the canvas without seeing it.

Syntax

void ctx.addHitRegion(options);

Options

The options argument is optional. When provided, it is an Object which can contain the following properties:

path
A Path2D object describing the area of the hit region. If not provided, the current path is used.
fillRule
The algorithm by which to determine if a point is inside or outside the hit region. Possible values:
nonzero
id
The ID for this hit region to reference it for later use in events, for example.
parentID
The ID of the parent region for cursor fallback and navigation by accessibility tools.
cursor
The cursor to use when the mouse is over this region (defaults to inherit). Inherits the cursor of the parent hit region, if any, or the canvas element's cursor.
control
An element (descendant of the canvas) to which events are to be routed. Defaults to null.
label
A text label for accessibility tools to use as a description of the region, if there is no control. Defaults to null.
role
An ARIA role for accessibility tools to determine how to represent this region, if there is no control. Defaults to null.

Examples

Using the addHitRegion method

This example demonstrates the addHitRegion() method.

HTML

<canvas id="canvas"></canvas>

JavaScript

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');

canvas.addEventListener('mousemove', function(event) {
  if(event.region) {
    alert('ouch, my eye :(');
  }
});

ctx.beginPath();
ctx.arc(100, 100, 75, 0, 2 * Math.PI);
ctx.lineWidth = 5;
ctx.stroke();

// Eyes
ctx.beginPath();
ctx.arc(70, 80, 10, 0, 2 * Math.PI);
ctx.arc(130, 80, 10, 0, 2 * Math.PI);
ctx.fill();
ctx.addHitRegion({id: "eyes"});

// Mouth
ctx.beginPath();
ctx.arc(100, 110, 50, 0, Math.PI);
ctx.stroke();

Edit the code below to see your changes update live in the canvas. (If you don't see the full smiley, check the browser compatibility table to see if your current browser supports hit regions already; you might need to activate a preference.)

Specifications

Canvas hit regions have been removed from the WHATWG Living Standard, although discussions about future standardization are ongoing. See https://github.com/whatwg/html/issues/3407 for more information.

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet

addHitRegion

Experimental'

Chrome Full support Yes

Disabled'

Full support Yes

Disabled'

Disabled' This feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.

Edge Full support ≤79

Disabled'

Full support ≤79

Disabled'

Disabled' From version ≤79: this feature is behind the Experimental Web Platform Features preference.

Firefox Full support 30

Disabled'

Full support 30

Disabled'

Disabled' From version 30: this feature is behind the canvas.hitregions.enabled preference. To change preferences in Firefox, visit about:config.

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android Full support 30

Disabled'

Full support 30

Disabled'

Disabled' From version 30: this feature is behind the canvas.hitregions.enabled preference. To change preferences in Firefox, visit about:config.

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

control

Experimental'

Chrome Full support Yes

Disabled'

Full support Yes

Disabled'

Disabled' This feature is behind the canvas.hitregions.enabled preference. To change preferences in Chrome, visit chrome://flags.

Edge Full support ≤79

Disabled'

Full support ≤79

Disabled'

Disabled' From version ≤79: this feature is behind the canvas.hitregions.enabled preference.

Firefox Full support 30

Disabled'

Full support 30

Disabled'

Disabled' From version 30: this feature is behind the canvas.hitregions.enabled preference. To change preferences in Firefox, visit about:config.

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

Full support 30

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

fillRule

Experimental'

Chrome Full support Yes

Disabled'

Full support Yes

Disabled'

Disabled' This feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.

Edge Full support ≤79

Disabled'

Full support ≤79

Disabled'

Disabled' From version ≤79: this feature is behind the Experimental Web Platform Features preference.

Firefox

No support No

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

No support No

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

id

Experimental'

Chrome Full support Yes

Disabled'

Full support Yes

Disabled'

Disabled' This feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.

Edge Full support ≤79

Disabled'

Full support ≤79

Disabled'

Disabled' From version ≤79: this feature is behind the Experimental Web Platform Features preference.

Firefox Full support 30

Disabled'

Full support 30

Disabled'

Disabled' From version 30: this feature is behind the canvas.hitregions.enabled preference. To change preferences in Firefox, visit about:config.

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

Full support 30

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

other hit region options

Experimental'

Chrome

No support No

Edge

No support No

Firefox

No support No

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

No support No

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

path

Experimental'Deprecated'Non-standard'

Chrome Full support Yes

Disabled'

Full support Yes

Disabled'

Disabled' This feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.

Edge Full support ≤79

Disabled'

Full support ≤79

Disabled'

Disabled' From version ≤79: this feature is behind the Experimental Web Platform Features preference.

Firefox Full support 39

Disabled'

Full support 39

Disabled'

Disabled' From version 39: this feature is behind the canvas.hitregions.enabled preference. To change preferences in Firefox, visit about:config.

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

Full support 30

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

Legend

Full support  
Full support
No support  
No support
Experimental. Expect behavior to change in the future.'
Experimental. Expect behavior to change in the future.
Non-standard. Expect poor cross-browser support.'
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.'
Deprecated. Not for use in new websites.
User must explicitly enable this feature.'
User must explicitly enable this feature.


See also