IT Geeks

크롬 확장프로그램 background.js에서 현재 열려있는 탭의 페이지의 DOM에 접근해서 특정 값을 popup.html로 전달하기

김무야호2 2024. 7. 12. 09:45

크롬 확장프로그램 background.js에서 현재 열려있는 탭의 페이지의 DOM에 접근해서 특정 값을 popup.html로 전달하기

크롬 확장 프로그램은 웹 브라우징 경험을 확장하고 향상시키는 데 매우 유용한 도구입니다. 이러한 확장 프로그램은 다양한 기능을 제공하며, 그 중 하나는 현재 열려 있는 탭의 페이지 DOM에 접근하여 데이터를 추출하고, 이를 popup.html로 전달하는 것입니다.

이 글에서는 background.js에서 현재 열려있는 탭의 페이지 DOM에 접근하고 특정 값을 추출하여 popup.html에 div로 추가하는 방법에 대해 알아보겠습니다.

크롬 확장 프로그램의 구조

크롬 확장 프로그램은 주로 다음과 같은 파일들로 구성됩니다:

  1. manifest.json: 확장 프로그램의 메타데이터와 권한을 정의하는 파일입니다.
  2. background.js: 백그라운드에서 지속적으로 실행되는 스크립트로, 이벤트를 처리하고 데이터를 관리합니다.
  3. content_scripts: 웹 페이지에 삽입되어 DOM에 접근하고 조작할 수 있는 스크립트입니다.
  4. popup.html: 확장 프로그램 아이콘을 클릭했을 때 표시되는 팝업 창입니다.
  5. popup.js: popup.html과 상호작용하는 스크립트입니다.

1. manifest.json 설정

먼저, manifest.json 파일을 설정하여 필요한 권한과 파일들을 정의합니다.

{
  "manifest_version": 2,
  "name": "DOM Access Example",
  "version": "1.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_popup": "popup.html"
  },
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["content.js"]
    }
  ]
}

2. background.js에서 현재 탭의 페이지 DOM에 접근하기

background.js는 크롬 API를 사용하여 현재 활성화된 탭의 정보를 얻고 content script를 실행하여 DOM에 접근합니다.

// background.js
chrome.browserAction.onClicked.addListener((tab) => {
  chrome.tabs.executeScript(tab.id, {
    file: 'content.js'
  });
});

3. content.js에서 DOM 데이터 추출하기

content.js는 실제로 웹 페이지에 삽입되어 DOM을 조작하는 스크립트입니다. 이 스크립트에서 특정 데이터를 추출하여 background.js에 전달합니다.

// content.js
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === "getDOM") {
    let data = document.querySelector("body").innerText; // 예시로 body의 텍스트를 가져옴
    sendResponse({data: data});
  }
});

4. background.js에서 데이터를 popup.html로 전달하기

background.js에서 content script로부터 데이터를 받아 popup.html로 전달합니다.

// background.js (추가된 부분)
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === "sendDataToPopup") {
    chrome.runtime.sendMessage({action: "updatePopup", data: request.data});
  }
});

5. popup.js에서 데이터 받기 및 div 추가하기

popup.js에서 background.js로부터 데이터를 받아서 div를 추가합니다.

// popup.js
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  if (request.action === "updatePopup") {
    let div = document.createElement("div");
    div.textContent = request.data;
    document.body.appendChild(div);
  }
});

결론

이렇게 해서 크롬 확장 프로그램을 통해 현재 열려있는 탭의 페이지 DOM에 접근하여 특정 값을 추출하고, 이를 popup.html에 div로 추가하여 표시할 수 있습니다. 이러한 방법을 통해 사용자 경험을 향상시키고, 다양한 기능을 제공하는 확장 프로그램을 개발할 수 있습니다.

```

반응형