Skip to main content

Command Palette

Search for a command to run...

리액트 웹에서 새창이 열릴 때 DevTools로 화면 캡처하는 절차

Updated
2 min read

웹 애플리케이션에서 window.open()을 통해 새창을 띄우는 기능은 흔히 사용됩니다. 그러나 크롬 개발자도구(DevTools)에서는 이 새창의 DOM 또는 네트워크 정보를 바로 추적하거나 캡처하는 데 어려움이 있습니다. 특히 새창이 리다이렉트 되거나 비동기 렌더링되는 경우, 새창이 열리는 시점에 맞춰 디버깅을 걸지 않으면 놓치기 쉽습니다.

이 글에서는 React 기반 웹에서 새창이 열릴 때의 화면을 정확하게 캡처하는 방법을 단계별로 정리합니다.


1. 부모창에서 리액트 컴포넌트의 클릭 이벤트에 브레이크포인트 걸기

먼저, 새창을 여는 버튼의 클릭 이벤트부터 추적합니다.

  1. 크롬 개발자도구(DevTools)를 열고 Components 탭 또는 Elements → Event Listeners → click 경로를 따라 이벤트를 찾습니다.

  2. 새창을 여는 버튼의 클릭 핸들러 코드로 진입하여, window.open()이 호출되는 위치에 브레이크포인트를 겁니다.

// 예시 코드
const handleClick = () => {
  const win = window.open('/popup', '_blank');
  win?.focus();
};

브레이크포인트는 window.open() 호출 직전에 거는 것이 가장 효과적입니다.


2. 새창이 열리면 자동으로 연결된 DevTools는 닫히므로, 브레이크포인트에서 멈춘 상태 유지

클릭 시점에 브레이크포인트가 걸리면 새창이 열리기 전이라 부모창은 멈춰 있게 됩니다. 이 시점에서 새창의 준비를 할 수 있습니다.

  1. window.open() 이후 win.document가 생성되면서 새창이 로드되기 시작하지만, 이때 DevTools가 자동으로 연결되지 않습니다.

  2. 수동으로 새창을 활성화한 뒤 F12를 눌러 새창의 개발자도구를 엽니다.


3. 새창에서

DOMContentLoaded

리스너를 설정

이제 새창이 열리고 있는 상태에서, DOM이 준비되는 시점에 브레이크포인트를 걸어야 합니다.

  1. 새창의 DevTools에서 Sources → Event Listener Breakpoints → Load → DOMContentLoaded 체크박스를 활성화합니다.

  2. 이 설정은 새창에서 DOM이 완전히 로드되는 시점에 중단되도록 합니다.


4. 부모창에서 resume (▶️) 을 눌러 새창 로딩 진행

이제 부모창으로 돌아가서 Resume script execution (F8)을 눌러 브레이크포인트를 해제합니다.

  • 그러면 새창이 실제로 로드되며, 방금 설정한 DOMContentLoaded 브레이크포인트에서 멈추게 됩니다.

  • 이 상태에서 DOM 구조나 네트워크 요청, 렌더링 타이밍 등을 분석할 수 있습니다.


보너스 팁: 새창에서 네트워크 캡처까지 하고 싶다면?

크롬의 DevTools는 새창에서 네트워크 탭을 자동으로 유지하지 않으므로, 개발용 프록시(예: Charles, Fiddler)를 사용하는 것도 방법입니다. 또는 새창이 띄워지는 시점을 window.open() 대신 a target="_blank" 형태로 바꾸고, 새창 자체를 명시적으로 열 수 있도록 구조를 바꾸는 것도 고려해볼 수 있습니다.


정리

단계설명
1새창을 여는 리액트 컴포넌트 클릭 핸들러 추적
2window.open() 전에 브레이크포인트 설정
3새창 DevTools에서 DOMContentLoaded 리스너 설정
4부모창에서 resume (F8) 눌러 새창 로딩 진행
5새창의 초기 렌더링을 캡처 및 분석 가능

More from this blog

Tech Lead의 기술 로드맵 작성법: 실전 예시와 함께

"우리 팀 기술 방향이 뭐예요?" Tech Lead가 되면 반드시 듣게 되는 질문입니다. 팀원들은 자신이 어디로 가고 있는지 알고 싶어합니다. 내년에도 이 기술을 쓸 건지, 새로운 걸 배워야 하는지, 이 프로젝트가 끝나면 뭘 하게 되는지. 기술 로드맵은 이 질문에 대한 답입니다. 단순히 "이런 기술 쓸 거예요"가 아니라, 왜 그 방향으로 가는지, 언제쯤 도달할 수 있는지, 각자 무엇을 준비해야 하는지를 보여주는 지도입니다. 이 글에서는 실제로 ...

Jan 10, 20266 min read

Tech Lead의 비용 관점: 돈을 아는 개발자가 되어야 하는 이유

Tech Lead는 단순히 "코드를 잘 짜는 시니어 개발자"가 아닙니다. 기술적 의사결정이 비즈니스에 미치는 영향을 이해하고, 비용 효율적인 선택을 할 수 있어야 합니다. 저는 직장을 다니면서 6년간 친구들과 창업을 준비했습니다. 자본이 넉넉하지 않았기에 모든 기술적 선택에서 "이게 정말 필요한가?", "더 저렴한 방법은 없는가?"를 고민할 수밖에 없었습니다. 그 경험이 지금의 비용 관점을 형성하는 데 큰 영향을 주었습니다. 이 글에서는 Tec...

Jan 10, 20265 min read

HTTP Toolkit으로 Spring Boot 애플리케이션 HTTP 요청 캡처하기

IntelliJ IDEA에서 HTTP Toolkit 프록시 설정하기 Spring Boot 애플리케이션을 개발할 때 외부 API 요청을 모니터링하고 디버깅하기 위해 HTTP Toolkit을 사용하는 경우가 많습니다. 이 글에서는 IntelliJ IDEA에서 HTTP Toolkit으로 프록시 설정하는 방법을 단계별로 설명하겠습니다. 1. HTTP Toolkit 설정 먼저 HTTP Toolkit을 실행하고 프록시 서버를 시작합니다. HTTP Too...

Jul 4, 20253 min read

인공지능 역사 인물 정리: 시대별 발전과 핵심 기여자

인공지능(Artificial Intelligence, AI)은 철학적 질문에서 시작해 알고리즘, 컴퓨팅 기술, 데이터의 발전을 거쳐 오늘날 생성형 AI로 진화했습니다. 이 글은 AI 역사 속 주요 인물을 시대별로 정리하고, 각 인물이 만들어낸 기술적 성과와 개념을 중심으로 소개합니다. 1950년대: 기계 지능 개념의 출발점 앨런 튜링 (Alan Turing, 1912–1954, 영국) 인공지능 개념의 철학적 기초 제시자 주요 이력 (19...

May 22, 20254 min read

📚 퀵소트 (QuickSort) : 원리, 방식 비교, 자바 구현까지

✨ 퀵소트란? 퀵소트(QuickSort)는 분할정복(Divide and Conquer) 전략을 활용한 정렬 알고리즘입니다. 피벗(Pivot)을 기준으로 배열을 분할하고, 각 부분 배열에 대해 재귀적으로 정렬을 수행하여 전체 정렬을 완성합니다. ⚙️ 작동 원리: 분할정복 퀵소트는 다음 세 단계로 구성됩니다. 단계설명 분할피벗을 기준으로 작은 값과 큰 값으로 배열을 나눈다 정복좌우 하위 배열에 대해 재귀적으로 퀵소트를 적용한다 결...

May 20, 20253 min read

Labaratory

19 posts