--- title: HTMLCanvasElement.getContext() slug: Web/API/HTMLCanvasElement/getContext translation_of: Web/API/HTMLCanvasElement/getContext ---
Метод HTMLCanvasElement.getContext()
возвращает контекст рисования на холсте, или {{jsxref("null")}}, если идентификатор контекста не определен.
canvas.getContext(contextType, contextAttributes);
"2d
", ведущий к созданию объекта {{domxref("CanvasRenderingContext2D")}}, представляющий двумерный контекст."webgl"
(или "experimental-webgl"
), который будет создавать объект {{domxref("WebGLRenderingContext")}}, представляющий трёхмерный контекст. Этот контекст доступен только в браузерах, которые реализуют {{domxref("WebGL")}} первой версии (OpenGL ES 2.0).webgl2
" (или "experimental-webgl2
"), который будет создавать объект {{domxref("WebGL2RenderingContext")}}, представляющий трёхмерный контекст. Этот контекст доступен только в браузерах, которые реализуют {{domxref("WebGL")}} второй версии (OpenGL ES 3.0). {{experimental_inline}}"bitmaprenderer",
который позволит создать {{domxref("ImageBitmapRenderingContext")}}, обеспечивающий только функции для замены содержимого холста с заданным {{domxref("ImageBitmap")}}.Примечание: Идентификаторы "experimental-webgl
" или "experimental-webgl2
" используются в новых реализациях WebGL. Эти реализации не достигли испытательного набора на соответствие или ситуация с графическими драйверами на платформе ещё не стабильна The Khronos Group certifies WebGL implementations under certain conformance rules.
contextAttributes
Вы можете использовать несколько атрибутов контекста при создании контекста рендеринга, например:
canvas.getContext("webgl", { antialias: false, depth: false });2d атрибуты контекста:
alpha
: Логическое значение, означающее, есть ли у холста альфа-канал. Значение false
говорит браузеру, что фон холста непрозрачный, что может ускорить рисование прозрачного содержимого и изображений.willReadFrequently
: Boolean that indicates whether or not a lot of read-back operations are planned. This will force the use of a software (instead of hardware accelerated) 2D canvas and can save memory when calling {{domxref("CanvasRenderingContext2D.getImageData", "getImageData()")}} frequently. This option is only available, if the flag gfx.canvas.willReadFrequently.enable
is set to true
(which, by default, is only the case for B2G/Firefox OS).storage
: String that indicates which storage is used ("persistent" by default).alpha
: Boolean that indicates if the canvas contains an alpha buffer.depth
: Boolean that indicates that the drawing buffer has a depth buffer of at least 16 bits.stencil
: Boolean that indicates that the drawing buffer has a stencil buffer of at least 8 bits.antialias
: Boolean that indicates whether or not to perform anti-aliasing.premultipliedAlpha
: Boolean that indicates that the page compositor will assume the drawing buffer contains colors with pre-multiplied alpha.preserveDrawingBuffer
: If the value is true the buffers will not be cleared and will preserve their values until cleared or overwritten by the author.failIfMajorPerformanceCaveat
: Boolean that indicates if a context will be created if the system performance is low.
{{domxref("RenderingContext")}}, который представляет собой
"2d"
,"webgl"
и "experimental-webgl"
,"webgl2"
и "experimental-webgl2"
, или"bitmaprenderer"
.Если contextType не соответствует возможному контексту рисунка, то возвращается null.
Given this {{HTMLElement("canvas")}} element:
<canvas id="canvas" width="300" height="300"></canvas>
You can get a 2d
context of the canvas with the following code:
var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); console.log(ctx); // CanvasRenderingContext2D { ... }
Now you have the 2D rendering context for a canvas and you can draw within it.
Specification | Status | Comment |
---|---|---|
{{SpecName('HTML WHATWG', "scripting.html#dom-canvas-getcontext", "HTMLCanvasElement.getContext")}} | {{Spec2('HTML WHATWG')}} | No change since the latest snapshot, {{SpecName('HTML5 W3C')}} |
{{SpecName('HTML5.1', "scripting-1.html#dom-canvas-getcontext", "HTMLCanvasElement.getContext")}} | {{Spec2('HTML5.1')}} | |
{{SpecName('HTML5 W3C', "scripting-1.html#dom-canvas-getcontext", "HTMLCanvasElement.getContext")}} | {{Spec2('HTML5 W3C')}} | Snapshot of the {{SpecName('HTML WHATWG')}} containing the initial definition. |
{{CompatibilityTable}}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support (2d context) |
{{CompatChrome(4)}} | {{CompatGeckoDesktop("1.9.2")}} | {{CompatIE(9)}} | {{CompatOpera(9)}} | {{CompatSafari(3.1)}} |
webgl context |
{{CompatChrome(9)}}[1] {{CompatChrome(33)}} |
{{CompatGeckoDesktop('1.9.2')}}[1] {{CompatGeckoDesktop('24')}} |
11.0[2] | 9.0[3] | 5.1[2] |
webgl2 context {{experimental_inline}} |
{{CompatNo}} | {{CompatGeckoDesktop('25')}}[4] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
2d alpha context attribute |
32 | {{CompatGeckoDesktop(30)}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatNo}} |
|
{{CompatVersionUnknown}} | {{CompatGeckoDesktop(41)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |
bitmaprenderer context | {{CompatNo}} | {{CompatGeckoDesktop(46)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support (2d context) |
{{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile("1.9.2")}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
webgl context |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}}[2] | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
webgl2 context {{experimental_inline}} |
{{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
2d alpha context attribute |
{{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile(30)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
failIfMajorPerformanceCaveat attribute |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatGeckoMobile(41)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
bitmaprenderer context | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile(46)}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |
[1] Chrome 9 and Gecko 1.9.2 initially implemented this as experimental-webgl
. Since Chrome 33 and Gecko 24 it is implemented as the standard webgl
.
[2] Internet Explorer 11, WebKit 5.1 and Firefox Mobile implemented this as experimental-webgl
.
[3] Opera 9 implemented this as experimental-webgl
, behind a user preference, in version 15.0 the user preference got removed.
[4] Gecko 25 implements this as "experimental-webgl2
" behind the user preference webgl.enable-prototype-webgl2
. Starting with Gecko 42, the string "webgl2" is used behind the same preference.