본문 바로가기

trouble-shooting

크롬익스텐션 content_script의 world속성

크롬익스텐션 프로그래밍중 fetch함수를 래핑해서 내 입맛대로 로직을 구성해보려 했었다. 즉, 아래와 같은 로직이 이뤄지길 바랬다.

const originalFetch = window.fetch
window.fetch = async (...args) => {
  // handle args
  ...
  return await originalFetch(...args)
}

이렇게 content_script에 등록해두면 동작이 이뤄지겠지? 전혀 아니었다. fetch함수를 확인해봐도 내가 선언한 함수로 재정의 되어있지 않고 그대로였다.

 

찾아보니 content_script는 격리된 Javascript 환경에서 실행된다 어쩌구 그러더라. 그래서 보안문제 등으로 안 되는가보다 하고 빠르게 납득했는데... 사실 위와 같은 기능을 프로그래밍 하는건 가능했다.

 

content_script속성중 world속성이 있는데 ISOLATED 또는 MAIN을 값으로 갖는다. 이 중 ISOLATED가 기본값이고 MAIN으로 설정할 경우 호스트와 Javascript실행환경을 공유한다고 한다! 아래 링크에 잘 설명되어 있다.

https://developer.chrome.com/docs/extensions/reference/manifest/content-scripts

 

매니페스트 - 콘텐츠 스크립트  |  Chrome Extensions  |  Chrome for Developers

manifest.json의 "content_scripts" 속성에 대한 참조 문서입니다.

developer.chrome.com