프런트엔드 개발의 가장 큰 디펜던시인 크롬 브라우저의 주요 이슈를 Chrome Platform Status의 Roadmap과 한 달간 blink-dev 활동 요약을 기준으로 정리하여 공유한다.
💡M
은 Milestone을 의미하며, M102은 102버전을 의미한다.
💡 웹 플랫폼 관련 이슈 위주로 다루며, 서비스에 영향이 크다고 판단되는 부분은 목차에 📌 를 표시한다.
💡 표준화에 대한 웹 개발자의 의견은 Chrome Platform Status 사이트에 쓰인 내용을 그대로 인용했다.
M102
inert
속성M103
AbortSignal.timeout()
정적 메서드popstate
이벤트 발생 허용"deflate-raw"
압축 포맷role
속성에 대한 ARIA 속성 반영Element.isVisible
메서드prerendering
Early Hint
form
요소의 rel
속성M104 (dev)
object-view-box
Dev Trial
:has()
의사 클래스overflow-clip-margin
프로퍼티에 visual-box
값 지원그 외 프로토타이핑
:modal
의사 클래스inert
속성inert
속성을 사용하면 웹 작성자가 DOM 트리의 일부를 비활성으로 표시할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
AbortSignal.timeout()
정적 메서드주어진 시간(밀리초) 후에 자동으로 중단되는 새로운 AbortSignal
객체를 반환한다. 이 메서드로 개발자는 신호 수락 비동기 API(예를 들어 fetch()
)에 대한 시간 초과를 쉽게 구현할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
popstate
이벤트 발생 허용이전의 크롬 브라우저에서는 hashchange
를 비동기로 실행하고 load
이벤트까지 popstate
를 지연했다. 이는 문서를 로드하는데 걸리는 시간에 따라 이벤트의 순서가 [hashchange, popstate]
또는 [popstate, hashchange]
가 될 수 있음을 의미한다. 변경 후의 크롬 브라우저는 파이어폭스 브라우저와 동일하게 URL 변경 즉시 popstate
가 발생한다. 즉 순서가 항상 [popstate, hashchange]
가 된다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
"deflate-raw"
압축 포맷새로운 압축 포맷인 "deflate-raw"
를 추가한다. 이를 통해 웹 개발자가 헤더나 푸터 없이 원시 압축 스트림에 액세스할 수 있다. 예를 들어 zip 파일을 읽고 쓰는데 필요하다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
role
속성에 대한 ARIA 속성 반영웹 개발자가 "role"
ARIA 속성을 직접 쿼리하고 수정할 수 있도록 자바스크립트 API를 제공한다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
Element.isVisible
메서드Element.isVisible()
는 요소가 보이면 true
를 반환하고 그렇지 않으면 false
를 반환한다. display: none
, visibility
, content-visibility
, opacity
를 포함해 요소를 보이지 않게 만드는 다양한 요소를 확인한다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
포커스 그룹 기능은 포커스가 가능한 엘리먼트들 사이에서 키보드 화살표 키를 이용해 키보드 포커스 탐색을 용이하게 하는 기능이다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
로컬 폰트로 작업하려는 웹 앱은 사용자가 먼저 서버에 업로드해야 한다. 경우에 따라 이 문제를 해결하기 위해 폰트 접근 같은 추가 기능을 제공하고 로컬 폰트를 WebFont
로 제공하는 별도의 로컬 프로그램을 설치하도록 사용자에게 요청한다.
폰트 접근 API를 사용하면 웹 앱이 이런 방법을 쓰지 않고도 로컬 폰트 및 일부 메타 데이터 목록에 접근할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
prerendering
prerendering
은 웹 페이지가 필요로 하기 전에 로드하므로 해당 페이지에 대한 실제 탐색이 발생하면 즉시 표시될 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
Early Hint
최상위 프레임 탐색 중에 HTTP 응답코드 103 Early Hint
를 지원한다. 응답에 링크 헤더가 포함된 경우 크롬 브라우저는 최종 응답이 수신되기 전에 지정된 리소스(modulepreload
포함)를 preload
하거나 지정된 출처에 preconnect
하려고 시도한다. 이를 통해 웹 개발자는 LCP 같은 코어 웹 바이탈을 최적화할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
form
요소의 rel
속성form
요소에 rel
속성을 추가한다. rel=noopener
가 있는 form
요소로 탐색된 웹 사이트에 window.filename
이 나타나지 않도록 하고 참조 헤더가 rel=noreferer
와 함께 전송되지 않게 한다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
웹 블루투스 API를 사용하면 웹 페이지가 블루투스를 통해 장치와 통신할 수 있다. 그러나 이 API는 교차출처 iframe
에서 사용할 수 없다. 최상위 문서가 API의 메서드를 사용하려면 교차출처 iframe
이 명시적으로 허용되어야 한다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
object-view-box
object-view-box
를 이용하면 작성자가 대상 대체 요소의 컨텐츠 상자 내에 그려야하는 이미지 내의 하위 집합을 지정할 수 있다. 이를 통해 CSS 그림자 같은 적절한 동작으로 사용자 정의 광원 또는 그림자가 적용된 이미지를 만들 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
전체화면 기능 위임 기능을 이용하면 송신자 창에서 일시적인 사용자 활성화를 포기한 후 신뢰할 수 있는 다른 창으로 requestFullscreen()
을 호출하는 기능을 전송할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
:has()
의사 클래스:has()
의사 클래스는 인수로 전달된 선택자와 일치하는 요소가 하나 이상 있는 요소를 지정하는 선택자다. M105 배포 예정이다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
overflow-clip-margin
프로퍼티에 visual-box
값 지원overflow-clip-margin
은 overflow: clip
인 요소를 자르기 전에 그 경계를 벗어나는 정도를 결정한다. 이 속성에 visual-box
값을 사용해 컨텐츠가 잘리는 overflow clip edge
를 정의하는 참조 상자를 구성할 수 있다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
작성자가 컨테이너 요소의 크기에 따라 요소의 스타일을 지정할 수 있다. @media
쿼리와 비슷하지만 뷰포트 크기 대신 컨테이너 크기를 기준으로 평가한다는 점만 다르다.
/* 기본적으로 display: block을 사용하지만 충분한 공간이 있다면 display: flex를 사용한다. */
.component {
container-type: inline-size;
}
.component > main {
display: block;
}
@container (inline-size >= 800px) {
.component > main {
display: flex;
}
}
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.
:modal
의사 클래스dialog 요소의 스타일을 지정하는 의사 클래스 선택자를 추가한다. :modal
의사 클래스는 해제될 때까지 외부 요소와의 모든 상호작용을 배제하는 상태에 있는 요소를 나타낸다.
상기 제안에 대한 타 브라우저의 의견은 다음과 같다.