크롬익스텐션 프로그래밍중 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
'trouble-shooting' 카테고리의 다른 글
vue app 외부에서 메소드 호출하기 (3) | 2024.12.21 |
---|---|
크롬 익스텐션 sendResponse 응답값 전달 안 되는 문제 (0) | 2024.12.06 |
Firestore를 Python에서 사용할때 주의할점 (0) | 2024.12.04 |
오픈소스 PR 날리기 vite-plugin-chrome-extension 오류해결 (2) | 2024.11.30 |
nginx를 사용해서 next.js 정적서빙 할 때 생긴 문제 (1) | 2024.11.29 |