ํ๋ฐํธ์๋ ๊ฐ๋ฐ์ ๊ฐ์ฅ ๋ง์ ์ํฅ์ ์ฃผ๋ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์ ๋ฒ์ ๋ณ ๋ณ๊ฒฝ ์์ ํญ๋ชฉ์ ์ ๋ฆฌ ๋ฐ ๊ณต์ ํ๋ค.
๐ก ๊ฐ ํญ๋ชฉ์ Chrome Platform Status์ Roadmap๊ณผ ํ ๋ฌ๊ฐ์ blink-dev ํ๋ ์์ฝ์ ๋ฐํ์ผ๋ก ์ ๋ฆฌํ๋ค.
๐ก ๊ฐ ํญ๋ชฉ์ โ ๏ธ๋ ์ง์ ์ค๋จ(Deprecated), โ ๋ ์๋ก์ด ๊ธฐ๋ฅ(Enabled by default), ๐งช๋ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ(Developer Trial, Origin Trial)๋ฅผ ์๋ฏธํ๋ค.
๐ก ๊ฐ ํญ๋ชฉ ์ค ๊ธฐ์กด ์๋น์ค์ ๋ฏธ์น๋ ์ํฅ์ด ํฌ๋ค๊ณ ํ๋จํ ํญ๋ชฉ์ ์์ ๋ชฉ ๋ค์ ๐ ํ์๋ฅผ ํ๋ค.
๐ก ์ง์ ์ค๋จ(โ ๏ธ) ์ธ์ ํญ๋ชฉ์ ๊ณต์ ๊ฐ์น๊ฐ ์๋ค๊ณ ํ๋จํ ๊ฒฝ์ฐ์๋ง ํฌํจํ๋ค.
๐ก ๋ฏธ๋ฆฌ ๋ณด๊ธฐ(๐งช)๋ chrome://flags
ํ์ด์ง์์ Experimental Web Platform features
๋ฅผ ํ์ฑํ(Developer Trial) ๋๋ ์ถ์ฒ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ(Origin Trial)๋ฅผ ์ ์ฒญํด ์ฌ์ฉํ ์ ์๋ค.
๐ก ๊ฐ ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ Chrome Platform Status๋ฅผ ๊ทธ๋๋ก ์ธ์ฉํ๋ค.
Chrome 132
HTMLVideoElement
์ ์ฒด ํ๋ฉด webkit
์ ๋์ฌ๊ฐ ๋ถ์ API ์ ๊ฑฐ ๐inset
๋ฐ margin
์์ฑ์ ๋ํด anchor-size()
ํ์ฉfetch
API ์์ฒญ๊ณผ ์๋ต์ bytes()
๋ฉ์๋ ์ถ๊ฐPushMessageData
์ธํฐํ์ด์ค์ bytes()
๋ฉ์๋ ์ถ๊ฐ writing-mode
์ง์ Chrome 133
<link rel=prefetch>
5๋ถ ๊ท์น ์ ๊ฑฐmaxInterStageShaderComponents
์ ํ ์ ๊ฑฐgetUserMedia
์ค๋์ค ์ ์ฝ ์กฐ๊ฑด ์ ๊ฑฐoverallProgress
์์ฑ ์ถ๊ฐattr()
ํจ์์ ์ถ๊ฐ ๊ธฐ๋ฅ ์ ๊ณตClipboardItem
์์ฑ์์ Promise<DOMString>
์ง์ ์ถ๊ฐChrome 134
Chrome NEXT
HTMLVideoElement
์ ์ฒด ํ๋ฉด webkit
์ ๋์ฌ๊ฐ ๋ถ์ API ์ ๊ฑฐ ๐<video>
์์์ ์ผ๋ถ ์ ๋์ฌ API๋ฅผ ์ ๊ฑฐํ๋ค.
์ง๊ธ์ ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๊ฐ Element.requestFullscreen()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด <video>
์์๊ฐ ์๋๋ผ๋ ํน์ ์์๋ฅผ ์ ์ฒด ํ๋ฉด์ผ๋ก ๋์ธ ์ ์๋ค. ์ ๊ฑฐ ์์ ์ธ API๋ ๊ณผ๊ฑฐ <video>
์์์ ์ ์ฒด ํ๋ฉด ์ง์์ ์ํด ์ ๋์ฌ(webkit
)๋ฅผ ๋ถ์ฌ ์ถ๊ฐํ๋ ์์ฑ์ผ๋ก, Chrome 38 ๋ฒ์ ๋ถํฐ ์ง์ ์ค๋จ๋์๋ค.
Chrome๋ 71 ๋ฒ์ ๋ถํฐ Fullscreen API๋ฅผ ์ง์ํ๋ ์์ง ์ด์ API๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ํด๋น API๋ก ์ ํํด์ผ ํ๋ค. ์ด๋ฒ์ ์ ๊ฑฐ๋๋ ์์ฑ์ ๋ค์๊ณผ ๊ฐ๋ค.
- boolean webkitSupportsFullscreen;
- boolean webkitDisplayingFullscreen;
- void webkitEnterFullscreen();
- void webkitExitFullscreen();
- void webkitEnterFullScreen();
- void webkitExitFullScreen();
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
inset
๋ฐ margin
์์ฑ์ ๋ํด anchor-size()
ํ์ฉCSS ๋ช
์ธ๊ฐ ๋ณ๊ฒฝ๋์ด inset
๋ฐ margin
์์ฑ์ ๋ํด anchor-size()
๊ฐ์ ํ์ฉํ๋ค.
bytes()
๋ฉ์๋ ์ถ๊ฐRequest
์ Response
์ธํฐํ์ด์ค์ bytes()
๋ฉ์๋๊ฐ ์ถ๊ฐ๋๋ค.
Uint8Array
๋ฅผ ๋ฐํํ๋ ํ๋ก๋ฏธ์ค๋ฅผ ํตํด ์์ฒญ๊ณผ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ๋ ์ฝ๊ฒ ์ฝ์ ์ ์๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
File System Access API๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ IDE, ์ฌ์ง ๋ฐ ๋์์ ํธ์ง๊ธฐ, ํ ์คํธ ํธ์ง๊ธฐ ๋ฑ ์ฌ์ฉ์์ ๋ก์ปฌ ๊ธฐ๊ธฐ์ ์๋ ํ์ผ๊ณผ ์ํธ์์ฉํ๋ ๊ฐ๋ ฅํ ์น ์ฑ์ ๋น๋ํ ์ ์๋ค.
์ฌ์ฉ์๊ฐ ์น ์ฑ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ฉด ์ด API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ๊ธฐ๊ธฐ์ ํ์ผ๊ณผ ํด๋๋ฅผ ์ง์ ์ฝ๊ฑฐ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ง์ ์ ์ฅํ ์ ์์ผ๋ฉฐ, ํ์ผ์ ์ฝ๊ณ ์ฐ๋ ๊ฒ ์ธ์๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ด๊ณ ์ฝํ ์ธ ๋ฅผ ์ด๊ฑฐํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
ํ์ผ ์์คํ ์ ํ์ฉํ ํ ์คํธ ํธ์ง๊ธฐ ๋ฐ๋ชจ((์ถ์ฒ: github: GoogleChromeLabs/text-editor))
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
์คํฌ๋กค ์ปจํ
์ด๋ ์์๋ฅผ ์๋์ผ๋ก ํฌ์ปค์ค ๊ฐ๋ฅํ(focusable) ์์๋ก ์ทจ๊ธํ๋ค. ๋ธ๋ผ์ฐ์ ๋ ์คํฌ๋กค ์ปจํ
์ด๋ ์์์ tabindex
๊ฐ ์์ด๋ <input>
, <button>
์ฒ๋ผ ํด๋น ์์์ ์๋์ผ๋ก ํฌ์ปค์ค๋ฅผ ๋ง์ถ๋ฉฐ, ์ฌ์ฉ์๋ ํ์ดํ ๋ฐฉํฅํค๋ก ํด๋น ์์๋ฅผ ์คํฌ๋กค ํ ์ ์๋ค.
์ด๋ ๋ง์ฐ์ค๊ฐ ์๋ ํ๊ฒฝ์์ ์ ๊ทผ์ฑ์ ๋์ด๊ธฐ ์ํ ์กฐ์น์ด๋ค. ํ์ง๋ง ์ค์ ์ฌ์ดํธ์์ ์ด ๊ธฐ๋ฅ์ด ๋์ํ๋ ๊ฒฝ์ฐ๋ ์ฐพ๊ธฐ ์ด๋ ค์ธ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. ์ด ๊ธฐ๋ฅ์ ํ์ ์์ ์ค ํฌ์ปค์ค๋ฅผ ๋ง์ถ ์ ์๋ ์์๊ฐ ์์ ๋๋ง ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
PushMessageData
์ธํฐํ์ด์ค์ bytes()
๋ฉ์๋ ์ถ๊ฐPushMessageData
์ธํฐํ์ด์ค์ bytes()
๋ฉ์๋๊ฐ ์ถ๊ฐ๋๋ค.
Uint8Array
๋ฅผ ๋ฐํํ๋ ํ๋ก๋ฏธ์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ ์ฝ๊ฒ ์ฝ์ ์ ์๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
writing-mode
์ง์CSS writing-mode
์์ฑ์์ sideways-rl
๊ณผ sideways-lr
์์ฑ์ ์ธ๋ก๋ก ์ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ์ผ๋ก, ๋ช
์ธ์ ์ถ๊ฐ๋์์ง๋ง ํฌ๋กฌ์์๋ ์์ง ์ง์๋์ง ์์๋ค.
์ด์ ํฌ๋กฌ์์๋ sideways-rl
๊ณผ sideways-lr
์์ฑ์ ์ง์ํ๊ฒ ๋์ด ์ธ๋ก๋ก ์ฐ๊ธฐ๋ฅผ ๋ ์ฝ๊ฒ ํ ์ ์๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
๊ธฐ์กด์๋ ๋นํ์ฑ ๋ฌธ์(๋ค๋ฅธ ํญ์ผ๋ก ์ด๋ํ ๊ฒฝ์ฐ)์์ showPopover()
์ showDialog()
๋ฉ์๋๋ ํธ์ถ๋์ง๋ง ์๋ฌด ๋์๋ ํ์ง ์์๋ค.
ํฌ๋กฌ์ ์ด๋ฌํ ์์
์ InvalidStateError
์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค.
๊ฐ๋ฐ ์ค ์์ธ๋ฅผ ๋ฐ์์ํค์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค๋ฉด ๋งค์ฐ ์กฐ๊ธ ํธํ์ฑ ์ํ์ด ์์ง๋ง, ์ด์ ๋ํด ์๋ ค์ง ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ด ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋์ง ์์ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
์น ๊ฐ๋ฐ์๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํน์ ํจ์๋ฅผ ํ์ฑํ๊ณ ์ปดํ์ผํด์ผ ํ๋์ง์ ๋ํ ์ฃผ์์ eagerCompilation
์ฃผ์์ ํตํด ์ถ๊ฐํ ์ ์๋ค.
//# eagerCompilation=all
์ด๋ฅผ ํตํด, ์๋์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ ํ ์ ์๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
Chrome 132์ 2025๋ 1์ 8์ผ์ ์ ์ ๋ฐฐํฌ ์์ ์ด๋ค.
Intl Locale Info API๋ ECMAScript์ TC39 ์์ํ์์ ๊ฐ๋ฐ ์ค์ธ Stage 3 ๋จ๊ณ์ ์ ์์ด๋ค. ์ด API๋ Intl.Locale ๊ฐ์ฒด๋ฅผ ํ์ฅํ์ฌ ์ง์ญ(locale)์ ๋ํ ๋ค์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ ์ฌ์ฉ์๊ฐ ์์นํ ์ง์ญ์ ๋ฌธํ์ ์์๋ฅผ ๋ ์ ์ดํดํ๊ณ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋๋ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ค.
ํ์ง๋ง ๊ธฐ์กด์ ์ฌ์ฉ๋๋ ์ผ๋ถ getter ๋ฉ์๋๊ฐ ์ ์์ด ์๋กญ๊ฒ ์์ ๋์๋ค. ๋ฐ๋ผ์ ๊ธฐ์กด์ ๊ตฌํ๋ deprecated(์ฌ์ฉ ์ค๋จ)๋ getter๋ฅผ ์ ๊ฑฐํ๊ณ , ์๋ก ์ ์๋ ํจ์๋ก ๋ค์ ์ถ์ํ๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
<link rel=prefetch>
5๋ถ ๊ท์น ์ ๊ฑฐ<link rel=prefetch>
๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ ์ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ก ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๊ธฐ ์ ์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํด ํ์ด์ง ๋ก๋ฉ ์๊ฐ์ ๋จ์ถํ ์ ์๋ค.
5๋ถ ๊ท์น์ <link rel=prefetch>
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ฌ ๋, ์ฒซ ๋ฒ์งธ ์ฌ์ฉ ์ 5๋ถ ๋์ ์บ์ ์ ๋ต(max-age
๋ no-cache
)์ ๋ฌด์ํ์ง ์๊ณ ์ผ๋ฐ HTTP ์บ์ ์ ๋ต์ ์ฌ์ฉํ๋ค.
5๋ถ ๊ท์น์ ํ์คํ๋์ง ์์๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ์ prefetch
๋์์ ์ผ์น์ํค๊ธฐ ์ํด ์ด ๊ท์น์ ์ ๊ฑฐํ๋ค.
prefetch
์ฌ์ฌ์ฉ์ 0.05%๋ง์ด ์ด ๊ท์น์ ํํ์ ๋ฐ๊ณ ์๊ณ , ์์ฒญ์ 5๋ถ max-age
๋ฅผ ์ค์ ํ์ฌ ์ด ๊ท์น์ ์ ์งํ ์ ์์ด ์ด ๊ท์น์ ์ ๊ฑฐํด๋ ํฐ ์ํฅ์ด ์๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
maxInterStageShaderComponents
์ ํ ์ ๊ฑฐWebGPU maxInterStageShaderComponents
์ ํ์ ๋น์ทํ ๋ชฉ์ ์ ๊ฐ์ง ๊ธฐ์กด์ maxInterStageShaderVariables
์ ํ๊ณผ ์ค๋ณต๋๋ค.
๋ ์ ํ์ ๊ณ์ฐ ๋ฐฉ์์ ํฐ ์ฐจ์ด๊ฐ ์๊ณ maxInterStageShaderVariables
์ ํ์ด ๋ ์ ์ฐํ๊ฒ ๋์ํ๊ธฐ ๋๋ฌธ์ maxInterStageShaderComponents
์ ํ์ ์ ๊ฑฐํ๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
getUserMedia
์ค๋์ค ์ ์ฝ ์กฐ๊ฑด ์ ๊ฑฐํ์คํ ์ด์ getUserMedia
์ฌ์ฉ์ ์ํด goog-
์ ๋์ฌ๊ฐ ๋ถ์ ์ฌ๋ฌ ๋นํ์ค ์กฐ๊ฑด์ ์ง์ํ๋ค.
์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฌ์ฉ๋์ด ํฌ๊ฒ ๊ฐ์ํ๊ณ , ํฌ๋ก๋ฏธ์์ ์ค๋์ค ์บก์ฒ ์คํ์ ๋ณ๊ฒฝ์ผ๋ก ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์กฐ๊ฑด์ ์ ๊ฑฐํ๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
overallProgress
์์ฑ ์ถ๊ฐAnimation ํด๋์ค์ overallProgress
์์ฑ์ ํ์ฌ ์๊ฐ(currentTime
)๊ณผ associated effect end
์ ๋น์จ ๊ฐ์ด๋ค.
์ด ์์ฑ์ ์ถ๊ฐํด ์ ๋๋ฉ์ด์ ์ ์งํ ์ํ๋ฅผ AnimationTimeline์ ๊ด๊ณ์์ด ์ผ๊ด๋๊ฒ ํํํ ์ ์๋ค.
Animation.overallProgress
๊ณ์ฐ ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ค์ ์ค ํ๋๋ผ๋ ์ฐธ์ธ ๊ฒฝ์ฐ
associated effect
๊ฐ ์๊ฑฐ๋currentTime
์ด unresolved
์ธ ๊ฒฝ์ฐoverallProgress
๋ 0์ด๋ค.associated effect end
์ด 0์ธ ๊ฒฝ์ฐ
currentTime
์ด ์์์ธ ๊ฒฝ์ฐoverallProgress
๋ 0์ด๋ค.overallProgress
๋ 1์ด๋ค.associated effect end
์ด ๋ฌดํ์ธ ๊ฒฝ์ฐoverallProgress
๋ 0์ด๋ค.overallProgress
= currentTime
/ associated effect end
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
attr()
ํจ์์ ์ถ๊ฐ ๊ธฐ๋ฅ ์ ๊ณตCSS Level 5์ ๋ช
์ธ์์ attr()
ํจ์์ <string>
์ ๋ํด ์ถ๊ฐ๋ก ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค.
<style>
div {
background-color: attr(data-bg-color color, red);
width: attr(data-width length, 100px);
height: attr(data-height length, 100px);
}
</style>
<div data-bg-color="blue" data-width="200px" data-height="200px">Test Div</div>
background-color
์์ฑ์ attr()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ data-bg-color
์์ฑ์์ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์ด๋ฅผ color
ํ์
์ผ๋ก ์ฒ๋ฆฌํ๋ค.width
์ height
์์ฑ์ attr()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ data-width
์ data-height
์์ฑ์์ ๊ฐ์ ๊ฐ์ ธ์ค๊ณ ์ด๋ฅผ length
ํ์
์ผ๋ก ์ฒ๋ฆฌํ๋ค.์ด ๊ธฐ๋ฅ์ ๋ง์ ์์ฒญ์ด ์์๊ณ , ์ด์ ํฌ๋กฌ์ด์๋ ์ฌ์ฉํ ์ ์๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
ํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ผ ์์คํ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๋ ค๋ฉด, ํ์ผ ์์คํ ์ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํด์ผ ํ๋ค.
FileSystemObserver
์ธํฐํ์ด์ค๋ ์น์ฌ์ดํธ๊ฐ ํ์ผ ์์คํ
์ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์๊ฐ์ผ๋ก ํ์ธ ๋ฐ์ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์
์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ์์ ๋ฐ์ํ๋ ๋ณ๊ฒฝ ์ฌํญ(์: ํ์ผ ์ถ๊ฐ, ์ญ์ , ์์ ๋ฑ)์ ๋ํด ์ด๋ฒคํธ๋ฅผ ๋ฐ์ ์ ์๋ค.
enum FileSystemChangeType {
"appeared", // ํ์ผ ์ถ๊ฐ
"disappeared", // ํ์ผ ์ญ์
"modified", // ํ์ผ ์์
"moved", // ํ์ผ ์ด๋
// ...
};
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์์๋ฅผ ๊ณ ๋ คํด๋ณด์.
<button popovertarget=foo>Activate
<div popover id=foo>Clicking me shouldn't close me</div>
</button>
๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ์ค๋ฒ๊ฐ ํ์ฑํ๋๋ค. ๊ทธ ํ ํ์ค๋ฒ๋ฅผ ํด๋ฆญํ๋ฉด ํ์ค๋ฒ๊ฐ ๋ซํ์ง ์์์ผ ํ๋ค.
ํ์ง๋ง, ํ์ฌ ํ์ค๋ฒ ์์ ๋ด๋ถ์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด <button>
์์๋ก ์ด๋ฒคํธ๊ฐ ๋ฒ๋ธ๋ง๋์ด ํธ์ถ๋๊ณ , ํ์ค๋ฒ์ ๋ซ๋ ๋์์ ์คํํ๋ค.
์ด๋ฒ ๋ณ๊ฒฝ์ผ๋ก ์ค์ฒฉ๋ ํ์ค๋ฒ๋ฅผ ํด๋ฆญํด๋ ํ์ค๋ฒ์์ ํธ์ถ๋์ง ์๋๋ก ๋์์ ๋ณ๊ฒฝํ๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
ClipboardItem
์์ฑ์์ Promise<DOMString>
์ง์ ์ถ๊ฐClipboardItem์ ํด๋ฆฝ๋ณด๋ API์ ์ธํฐํ์ด์ค๋ก, ํด๋ฆฝ๋ณด๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์์ฑํ ๋ ์ฌ์ฉ๋๋ค.
ClipboardItem์ ์์ฑ์๋ ๋ฐ์ดํฐ๋ฅผ Blob
๋๋ Promise<Blob>
์ ํํ๋ก ๋ฐ๊ณ ์๋ค.
ํ์ง๋ง, Clipboard API ๋ช
์ธ์ ๋ฐ๋ฅด๋ฉด ์์ฑ์๋ก DOMString
์ ๋ฐ์ ์ ์๋๋ก ์ ๊ณตํด์ผ ํ๋ค.
ํ์ฌ ๊ฐ๋ฐ์๋ ClipboardItem
์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ชจ๋ ๋ฌธ์์ด์ Blob
๋ฐ์ดํฐ๋ก ๋ฐ๊ฟ์ผ ํ๋ ๋ถํธํ ์์
์ด ํ์ํ๊ณ , ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์๋ ์ด๋ฏธ ์ง์๋๋ ๊ธฐ๋ฅ์ด๋ฏ๋ก ํฌ๋กฌ๋ ์ด์ ๋ง์ถฐ ์ง์ํ๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
ํฌ๋กฌ์ WebAssembly ์ ํ๋ฆฌ์ผ์ด์ ์์ 8GB์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค. ์ด์ ์๋ 4GB๊น์ง๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
64๋นํธ ํฌ์ธํฐ ํ๊ฒฝ์ ์์ค ์ธ์ด๋ฅผ ์ง์ํ๊ธฐ ์ํด ์ด ์ ์์ 64๋นํธ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํ๋๋ก ํ ์ด๋ธ์ ํ์ฅํ๋ค.
๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ 4๊ธฐ๊ฐ๋ฐ์ดํธ์ ๋ฉ๋ชจ๋ฆฌ๋ฉด ์ถฉ๋ถํ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ ์ ์๋ค๋ ์ถ๊ฐ ์ด์ ์ด ์๋ค. ๊ทธ๋ฌ๋ ์ด๋ณด๋ค ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ ํ์ฌ WebAssembly ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ ๋ คํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
์ด์ ํฌ๋กฌ์์ WebAssembly ์ ํ๋ฆฌ์ผ์ด์ ์ด 32๋นํธ์ 64๋นํธ ๋ฉ๋ชจ๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ๋ชจ๋ ์ง์ํด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
Chrome 133์ 2025๋ 1์ 29์ผ์ ์ ์ ๋ฐฐํฌ ์์ ์ด๋ค.
WebGL์ด SwiftShader๋ก ์๋ ๋์ฒด๋๋ ๋์์ด ์ค๋จ๋๋ค.
SwiftShader๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด --enable-unsafe-swiftshader
ํ๋๊ทธ๋ฅผ ๋ช
์์ ์ผ๋ก ์ค์ ํด์ผ ํ๋ฉฐ, WebGL ์คํจ ์ ๋์ฒด API(Canvas2D ๋ฑ)๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋๋นํด์ผ ํ๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
Chrome 134์ 2025๋ 2์ 26์ผ์ ์ ์ ๋ฐฐํฌ ์์ ์ด๋ค.
unload
์ด๋ฒคํธ๋ ํด๋น ๋ฌธ์๋ฅผ ๋ ๋๊ฑฐ๋ ํ์ ์์(.js
, .css
๋ฑ)์ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํ ๋ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ค. ์ด ์ด๋ฒคํธ๋ฅผ ์ด์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ข
๋ฃํ๊ธฐ ์ ์ ํน์ ๋์์ ์คํํ ์ ์๋ค.
window.addEventListener('unload', (event) => {
navigator.sendBeacon('/api/log', 'unload!');
});
ํ์ง๋ง unload
์ด๋ฒคํธ๋ beforeunload
์ด๋ฒคํธ์ ๋ฌ๋ฆฌ ๊ธฐ๋ณธ ๋์์ ์ทจ์(event.preventDefault()
)ํ ์ ์์ด ์ด๋ฒคํธ๊ฐ ์์ ๋ฐ์ํ์ง ์๊ธฐ๋ ํ๋ค. W3C์ ํต๊ณ์ ๋ฐ๋ฅด๋ฉด unload
์ด๋ฒคํธ๊ฐ ์ ๋๋ก ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ํฌ๋กฌ ๋ฐ์คํฌํ์์๋ 95%, ๋ชจ๋ฐ์ผ์์๋ 57%~68% ์ ๋๋ก, ์ด๋ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ํน์ฑ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ๋ค๋ฅธ ์ฑ์ ๋ณด๋ค๊ฐ ๋ธ๋ผ์ฐ์ ์์ฒด๋ฅผ ์ข
๋ฃํ๋ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ํฅ๋๊ฐ ํฐ ๋งํผ, ํฌ๋กฌ์ ์ ์ง์ ์ผ๋ก unload
์ด๋ฒคํธ๋ฅผ ์ ๊ฑฐํ ๊ณํ์ด๋ค. ๋จผ์ Permissions-Policy
๋ฅผ ์ถ๊ฐํด ์ฌ์ฉ ์ฌ๋ถ ํ์ฉ์ ๊ฒฐ์ ํ ์ ์๋๋ก ํ๊ณ , ๋์ค์๋ ํด๋น ๊ถํ์ ๊ธฐ๋ณธ๊ฐ์ deny
๋ก ๋ฐ๊ฟ ์์ ์ด๋ค. ์ฐธ๊ณ ๋ก, Chrome 117์์ unload
์ด๋ฒคํธ์ ํ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ Permissions-Policy
์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ๋ฅผ ์ถ๊ฐํ๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
ํฌ์ปค์ค๋ DOM ์์ ์ ๊ฑฐ ์ blur
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ๋ณ๊ฒฝํ๋ค. ๊ธฐ์กด ๋ช
์ธ์๋ ํฌ์ปค์ค๋ DOM ์์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ์ ๋ํ ์ ์๊ฐ ์์ด Chromium ๊ธฐ๋ฐ์ ๋ธ๋ผ์ฐ์ ๋ ํฌ์ปค์ค๋ DOM ์์ ์ ๊ฑฐ ์ ํด๋น ์์์ blur
์ด๋ฒคํธ๋ฅผ ๋ฐ์์์ผฐ๋ค. ์ต์ ๋ช
์ธ์์ DOM ์์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ, ํฌ์ปค์ค ์ ๊ฑฐ ๋จ๊ณ(blur
, change
์ด๋ฒคํธ ๋ฐ์)๋ฅผ ์ํํ์ง ์๋๋ก ์ ์ํจ์ ๋ฐ๋ผ ํฌ๋กฌ๋ ํฌ์ปค์ค ์ ๊ฑฐ ๋จ๊ณ๋ฅผ ์ํํ์ง ์๋๋ก ๋ณ๊ฒฝํ ์์ ์ด๋ค.
๋ค๋ง ์ ์ ์ ์ฉ ์ผ์ ์ ๋ถ๋ถ๋ช ํ๋ค. ํฌ๋กฌ์ ์๊ธฐ์น ๋ชปํ ๋ฒ๊ทธ๊ฐ ์์ ์ ์์ด ๊ด๋ จ ์ฌ์ด๋ ์ดํํธ๋ฅผ ๊ผผ๊ผผํ ๊ฒํ ํ ๊ธฐ๋ฅ์ ์ ์ฉํ๋ค๋ ์ ์ฅ์ด๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
์ 3์ ์ฟ ํค(Third-Party Cookies)๋ ํ์ฌ ๋๋ฉ์ธ๊ณผ ๋ค๋ฅธ ๋๋ฉ์ธ์์ ๋ฐํํ ์ฟ ํค๋ฅผ ๋งํ๋ค. ์ 3์ ์ฟ ํค๋ฅผ ํ์ฉํ๋ฉด ์ฌ์ฉ์์ ์ทจํฅ, ํ๋ ์ ๋ณด ๋ฑ์ ํ์ ํ ์ ์์ด ๊ด๊ณ ๋ง์ผํ ๋ถ์ผ์์ ์์ฃผ ์ฌ์ฉํ์ผ๋, ์ํ์ง ์๋ ๊ฐ์ธ์ ๋ณด๊น์ง ์ ์ถ๋ ์ ์๋ค๋ ํฐ ๋จ์ ์ด ์๋ค.
Chrome์ ์ด๋ฏธ ๊ด๋ จ ๋ฒ ์ค์๋ฅผ ์ํด 2020๋ 1์๋ถํฐ ์ 3์ ์ฟ ํค์ ์ค๋จ์ ์๊ณ ํ๋ค. ๊ทธ๋์ ์ํฅ์ด ํฐ ์ ์ ๊ณ ๋ คํด ์ง์ ์ค๋จ์ ๊ณ์ ๋ฏธ๋ค์์ผ๋, 2024๋ ์๋ ์ ์ง์ ์ผ๋ก ์ 3์ ์ฟ ํค๋ฅผ ์ง์ ์ค๋จํ ์์ ์ด๋ค.
์ฐธ๊ณ ๋ก, ๊ตฌ๊ธ์ด ๋์์ผ๋ก ์ฌ์ฉ์์ ๊ฐ์ธ์ ๋ณด๋ ๋ณดํธํ๋, ๊ธฐ์กด์ ์ 3์ ์ฟ ํค๊ฐ ํ๋ ์ญํ ์ ๋์ฒดํ ์ ์๋ Privacy Sandbox๋ฅผ ๊ฐ๋ฐ ์ค์ด๋ค.
ํ์ฌ ๋ฐฐํฌ๋ Chrome 127์์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํตํด ๋ฏธ๋ฆฌ ํ์ธํ ์ ์๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ ๋ฆฝ์ ์ธ ํํฐ์ ์ํ๊ฐ ์๋ ์ฟ ํค(์ดํ CHIPS)๋ ๊ฐ๋ฐ์๊ฐ ์ต์์ ์ฌ์ดํธ๋ง๋ค ๋ณ๋์ ์ฟ ํค ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ถํ ๋ ์คํ ๋ฆฌ์ง์ ์ฟ ํค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
WebView์์ ์ฟ ํค๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉํ๋ Android CookieManager API
๊ฐ CHIPS
๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง ์๋๋ค.
WebView์์ CHIPS
๋ฅผ ๋นํ์ฑํํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ค ๋ค์ ์ ๊ณตํ ์ ์๋๋ก ์ค๋นํ๋ค.
์ด๋ก ์ธํด ์ค์ ๋ด์ฉ๊ณผ API ๋ด์ฉ์ด ๋ถ์ผ์นํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ํฌ๋กฌ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ํฅ๋๋ฅผ ํ์ ์ค์ด๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.
Protected Audience API๋ ํฌ๋ก์ค ์ฌ์ดํธ ์๋ ํํฐ ์ถ์ ์์ด ๋ฆฌ๋ง์ผํ ๋ฐ ๊ด๊ณ ํ๊ฒํ ์ ์ง์ํ๋ API๋ค.
API ์ ํธ์ ์ง์์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ์์ผ๋ก ์๋ธ๋ฆฌ์์ค ์น ๋ฒ๋ค์ ์ฌ์ฉํ ์ด์ ๋ฒ์ ๊ณผ ํ์ด์ง ์์ fetch()
์์ฒญ์ ํน์ HTTP ์๋ต ํค๋๋ฅผ ์ฌ์ฉํ ์๋ก์ด ๋ฒ์ ์ด ์กด์ฌํ๋ค.
์๋ธ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ฒ์ ์ด 5์ต๋ถ์ 1 ์ ๋๋ก ๋ฎ์ ํ์ด์ง ์ฌ์ฉ๋์ ๋ณด์ด๊ณ ์์ด ์ ๊ฑฐํ๊ณ ์ ํ๋ค.
์ด ํญ๋ชฉ์ ๋ํ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์น ๊ฐ๋ฐ์์ ์๊ฒฌ์ ๋ค์๊ณผ ๊ฐ๋ค.