크롬 확장프로그램 background.js에서 현재 열려있는 탭의 페이지의 DOM에 접근해 특정 값을 popup.html로 전달하기
크롬 확장프로그램은 브라우저의 기능을 확장하고 사용자의 경험을 향상시키는 강력한 도구입니다. 이 글에서는 크롬 확장프로그램에서 background.js
파일을 사용해 현재 열려있는 탭의 페이지 DOM에 접근하고, 특정 값을 popup.html
에 있는 div
요소에 추가하여 전달하는 방법을 설명하겠습니다. 이를 통해 크롬 확장프로그램을 보다 유용하게 활용할 수 있게 될 것입니다.
현재 열려있는 탭의 페이지의 DOM에 접근해 특정 값을 popup.html로 전달하기 준비 단계
크롬 확장프로그램을 개발하기 위해 필요한 기본적인 파일들은 다음과 같습니다:
manifest.json
background.js
popup.html
popup.js
이 글에서는 각각의 파일이 어떻게 구성되고, 서로 어떻게 상호작용하는지 자세히 설명하겠습니다.
크롬 확장프로그램 manifest.json 설정
먼저, manifest.json
파일을 설정해야 합니다. 이 파일은 확장프로그램의 메타데이터와 필요한 권한을 정의합니다.
{ "manifest_version": 3, "name": "DOM Access Example", "version": "1.0", "description": "Access and modify DOM of the current tab and send data to popup.html", "permissions": [ "activeTab", "scripting" ], "background": { "service_worker": "background.js" }, "action": { "default_popup": "popup.html", "default_icon": { "16": "icons/icon16.png", "48": "icons/icon48.png", "128": "icons/icon128.png" } }}
크롬 확장프로그램 background.js 설정
background.js
파일은 백그라운드에서 실행되며, 현재 열려있는 탭의 DOM에 접근하는 역할을 합니다. 여기서는 chrome.scripting.executeScript
API를 사용해 스크립트를 주입하여 DOM을 조작합니다.
chrome.action.onClicked.addListener((tab) => { chrome.scripting.executeScript({ target: { tabId: tab.id }, function: getDomContent }, (results) => { if (results && results[0] && results[0].result) { chrome.storage.local.set({ domContent: results[0].result }); } });});function getDomContent() { // DOM에서 특정 값을 추출하는 함수 예시 const specificValue = document.querySelector('h1').innerText; return specificValue;}
크롬 확장프로그램 popup.html 설정
popup.html
파일은 확장프로그램의 팝업 인터페이스를 정의합니다. 여기에서는 단순한 div
요소를 포함하여, 나중에 background.js
에서 가져온 값을 이 div
에 표시합니다.
<!DOCTYPE html><html><head> <title>Popup</title> <style> body { font-family: Arial, sans-serif; padding: 10px; } #content { margin-top: 10px; padding: 10px; border: 1px solid #ddd; } </style></head><body> <h2>Popup Content</h2> <div id="content">Loading...</div> <script src="popup.js"></script></body></html>
크롬 확장프로그램 popup.js 설정
popup.js
파일은 popup.html
파일의 스크립트를 제어합니다. 여기서는 chrome.storage.local
을 사용해 background.js
에서 저장한 값을 가져와 div
요소에 표시합니다.
document.addEventListener('DOMContentLoaded', () => { chrome.storage.local.get('domContent', (data) => { if (data.domContent) { document.getElementById('content').innerText = data.domContent; } else { document.getElementById('content').innerText = 'No content found.'; } });});
작동 원리
- 사용자가 확장프로그램 아이콘을 클릭하면,
background.js
에서chrome.action.onClicked.addListener
가 트리거됩니다. - 현재 탭의 페이지에
getDomContent
함수가 주입되어, 페이지의 DOM에서 특정 값을 추출합니다. - 추출한 값은
chrome.storage.local
에 저장됩니다. popup.html
이 로드되면,popup.js
가chrome.storage.local
에서 저장된 값을 가져와div
요소에 표시합니다.
결론
이 글에서는 크롬 확장프로그램에서 background.js
를 사용해 현재 열려있는 탭의 페이지 DOM에 접근하고, 특정 값을 popup.html
에 전달하는 방법을 설명했습니다. 이를 통해 크롬 확장프로그램 개발에 대한 이해도를 높이고, 실제로 유용한 확장프로그램을 만드는 데 도움이 되기를 바랍니다.