피드로 돌아가기
Dev.toFrontend
원문 읽기
230라인의 Vanilla JS로 구현한 Minimal Permission 기반 Markdown 변환기
A 230-Line Chrome MV3 Extension That Copies the Page Selection as Markdown — Without `<all_urls>`
AI 요약
Context
브라우저 기본 Copy 명령어가 HTML/Plain Text만 지원함에 따라 Markdown 기반 플랫폼으로의 붙여넣기 시 서식 유실 및 태그 노출 문제 발생. 기존의 전역 권한 요청 방식은 사용자 신뢰도 저하와 스토어 심사 지연을 초래하는 한계 존재.
Technical Solution
- activeTab 및 scripting 권한 조합을 통한 <all_urls> 의존성 제거 및 최소 권한 설계
- Service Worker를 중계지로 활용한 Popup $\rightarrow$ Service Worker $\rightarrow$ Tab 쿼리 구조의 안정적 탭 핸들링 구현
- executeScript를 2단계(라이브러리 주입 $\rightarrow$ 런너 실행)로 분리하여 컨텐츠 스크립트의 모듈 로딩 복잡성 해결
- Tag-dispatch 패턴 기반의 순수 함수형 HTML$\rightarrow$Markdown 컨버터 설계를 통한 브라우저 의존성 제거
- onMessage 비동기 핸들러 내 return true 처리를 통한 sendResponse 채널 유지 전략 적용
실천 포인트
- 브라우저 확장 프로그램 개발 시 <all_urls> 대신 activeTab + scripting 조합 검토 - UI 컴포넌트(Popup)에서 직접 탭에 접근하기보다 Service Worker를 통한 메시징 라우팅 권장 - DOM 조작 로직을 순수 함수로 분리하여 브라우저 없이 Node.js 환경에서 유닛 테스트 수행