설명
chrome.devtools.inspectedWindow
API를 사용하여 검사된 창과 상호작용합니다. 검사된 페이지의 탭 ID를 가져오거나 검사된 창의 컨텍스트에서 코드를 평가하거나 페이지를 새로고침하거나 페이지 내의 리소스 목록을 가져옵니다.
매니페스트
chrome.devtools.inspectedWindow
를 사용하여 검사된 창과 상호작용: 다음의 탭 ID를 가져옵니다.
검사된 창의 컨텍스트에서 코드를 평가하거나, 페이지를 새로고침하거나,
페이지 내 리소스 목록입니다.
Developer Tools API 사용에 관한 일반적인 소개는 DevTools API 요약을 참조하세요.
개요
tabId
속성은 chrome.tabs.*
와 함께 사용할 수 있는 탭 식별자를 제공합니다.
API 호출 하지만 chrome.tabs.*
API는 개발자 도구에 노출되지 않습니다.
탭 ID를 백그라운드로 전달해야 합니다.
거기에서 chrome.tabs.*
API 함수를 호출합니다.
reload
메서드는 검사된 페이지를 새로고침하는 데 사용할 수 있습니다. 또한 호출자는
사용자 에이전트 문자열 재정의, 페이지 로드 시 초기에 삽입되는 스크립트 또는
캐시된 리소스를 강제로 새로고침하는 옵션을 사용할 수 있습니다.
getResources
호출 및 onResourceContent
이벤트를 사용하여 리소스 목록 가져오기
(문서, 스타일시트, 스크립트, 이미지 등)이 있습니다. getContent
및
onResourceContentCommitted
이벤트와 함께 Resource
클래스의 setContent
메서드가
리소스 콘텐츠 수정을 지원하는 데 사용할 수 있어야 합니다(예: 외부 편집기).
검사된 창에서 코드 실행
eval
메서드는 확장 프로그램이 다음 컨텍스트에서 JavaScript 코드를 실행할 수 있는 기능을 제공합니다.
확인할 수 있습니다 이 방법은 올바른 상황에서 사용할 경우 효과적이며 사용하면 위험합니다.
있습니다. 특정 기능이 필요하지 않은 경우 tabs.executeScript
메서드를 사용합니다.
eval
메서드로 제공됩니다.
eval
메서드와 tabs.executeScript
메서드의 주요 차이점은 다음과 같습니다.
eval
메서드는 평가되는 코드에 격리된 환경을 사용하지 않으므로 JavaScript는 코드에 액세스할 수 있는지 확인합니다. 이 메서드를 사용하여 검사된 페이지의 JavaScript 상태가 필요합니다.- 평가되는 코드의 실행 컨텍스트에는 Developer Tools 콘솔 API가 포함됩니다.
예를 들어 코드는
inspect
및$0
를 사용할 수 있습니다. - 평가된 코드는 확장 프로그램 콜백에 전달되는 값을 반환할 수 있습니다. 반환된 값입니다. 유효한 JSON 객체여야 함 (기본 자바스크립트 유형과 비순환 객체만 포함할 수 있음) 다른 JSON 객체에 대한 참조) 수신된 데이터를 처리하는 동안 각별히 주의하시기 바랍니다. 검사된 페이지에서 삭제: 검사된 페이지에서 실행 컨텍스트가 기본적으로 제어됩니다. a 악성 페이지가 확장 프로그램으로 반환되는 데이터에 영향을 미칠 수 있습니다.
한 페이지에 여러 개의 서로 다른 JavaScript 실행 컨텍스트가 포함될 수 있습니다. 각 프레임에는 해당 컨텍스트에서 실행 중인 콘텐츠 스크립트가 있는 각 확장 프로그램에 대한 추가 컨텍스트를 있습니다.
기본적으로 eval
메서드는 검사된 페이지의 메인 프레임 컨텍스트에서 실행됩니다.
eval
메서드는 두 번째 인수(선택사항)를 사용하며, 이 인수는
코드가 평가됩니다 이 options 객체에는 다음 키 중 하나 이상이 포함될 수 있습니다.
frameURL
- 검사된 페이지의 기본 프레임이 아닌 프레임을 지정하는 데 사용합니다.
contextSecurityOrigin
- 웹 출처에 따라 지정된 프레임 내에서 컨텍스트를 선택하는 데 사용합니다.
useContentScriptContext
- true인 경우 확장 프로그램의 콘텐츠 스크립트와 동일한 컨텍스트에서 스크립트를 실행합니다. ( 확장 프로그램의 자체 웹 조직을 컨텍스트 보안 출처로 지정). 이는 다음을 수행하는 데 사용할 수 있습니다. 콘텐츠 스크립트와 데이터를 교환할 수 없습니다.
예
다음 코드는 검사한 페이지에서 사용하는 jQuery 버전을 확인합니다.
chrome.devtools.inspectedWindow.eval(
"jQuery.fn.jquery",
function(result, isException) {
if (isException) {
console.log("the page is not using jQuery");
} else {
console.log("The page is using jQuery v" + result);
}
}
);
이 API를 사용하려면 chrome-extension-samples에서 devtools API 예시를 설치하세요. 저장소
유형
Resource
문서, 스크립트, 이미지와 같이 검사된 페이지 내의 리소스입니다.
속성
-
URL
문자열
리소스의 URL입니다.
-
getContent
void
리소스의 콘텐츠를 가져옵니다.
getContent
함수는 다음과 같습니다.(callback: function) => {...}
-
콜백
함수
callback
매개변수는 다음과 같습니다.(content: string, encoding: string) => void
-
콘텐츠
문자열
인코딩될 수 있는 리소스의 콘텐츠입니다.
-
encoding
문자열
콘텐츠가 인코딩되지 않은 경우 비어 있고 그렇지 않으면 인코딩 이름입니다. 현재는 base64만 지원됩니다.
-
-
-
setContent
void
리소스의 콘텐츠를 설정합니다.
setContent
함수는 다음과 같습니다.(content: string, commit: boolean, callback?: function) => {...}
-
콘텐츠
문자열
리소스의 새 콘텐츠입니다. 현재 텍스트 유형의 리소스만 지원됩니다.
-
commit
부울
사용자가 리소스 수정을 완료했고 리소스의 새 콘텐츠가 유지되어야 하는 경우 true입니다. 사용자가 리소스를 수정하는 동안 전송된 사소한 변경사항인 경우 false입니다.
-
콜백
함수 선택사항
callback
매개변수는 다음과 같습니다.(error?: object) => void
-
오류
객체(선택사항)
리소스 콘텐츠가 성공적으로 설정된 경우 정의되지 않음으로 설정됩니다. 은 오류를 설명합니다.
-
-
속성
tabId
검사 중인 탭의 ID입니다. 이 ID는 chrome.tabs.*에서 사용할 수 있습니다. 또는 Compute Engine API를 통해 만들 수 있습니다
유형
숫자
메서드
eval()
chrome.devtools.inspectedWindow.eval(
expression: string,
options?: object,
callback?: function,
)
검사된 페이지의 기본 프레임 컨텍스트에서 JavaScript 표현식을 평가합니다. 표현식은 JSON 호환 객체로 평가되어야 합니다. 그렇지 않으면 예외가 발생합니다. eval 함수는 평가 중에 발생하는 DevTools 측 오류 또는 JavaScript 예외를 보고할 수 있습니다. 두 경우 모두 콜백의 result
매개변수는 undefined
입니다. DevTools 측 오류의 경우 isException
매개변수는 null이 아니며 isError
가 true로 설정되고 code
가 오류 코드로 설정됩니다. JavaScript 오류의 경우 isException
는 true로 설정되고 value
는 발생한 객체의 문자열 값으로 설정됩니다.
매개변수
-
표현식
문자열
평가할 표현식입니다.
-
옵션
객체(선택사항)
옵션 매개변수는 하나 이상의 옵션을 포함할 수 있습니다.
-
frameURL
문자열(선택사항)
지정하면 URL이 지정된 iframe과 일치하는 iframe에서 표현식이 평가됩니다. 기본적으로 표현식은 검사된 페이지의 상단 프레임에서 평가됩니다.
-
scriptExecutionContext
문자열(선택사항)
Chrome 107 이상 를 통해 개인정보처리방침을 정의할 수 있습니다.지정된 출처와 일치하는 확장 프로그램의 콘텐츠 스크립트 컨텍스트에서 표현식을 평가합니다. 지정된 경우scriptExecutionContext는 'true'를 재정의합니다. useContentScriptContext 설정을 사용합니다.
-
useContentScriptContext
불리언 선택사항
콘텐츠 스크립트가 검사된 페이지에 이미 삽입되어 있는 경우 호출 확장 프로그램의 콘텐츠 스크립트 컨텍스트에서 표현식을 평가합니다. 그렇지 않으면 표현식이 평가되지 않고
isError
필드가 true로 설정되고code
필드가E_NOTFOUND
로 설정된 객체로 예외 매개변수가 설정된 상태로 콜백이 호출됩니다.
-
-
콜백
함수 선택사항
callback
매개변수는 다음과 같습니다.(result: object, exceptionInfo: object) => void
-
결과
객체
평가 결과입니다.
-
exceptionInfo
객체
표현식을 평가하는 동안 예외가 발생한 경우 세부정보를 제공하는 객체입니다.
-
코드
문자열
표현식이 평가되기 전에 DevTools 측에서 오류가 발생한 경우 설정합니다.
-
설명
문자열
표현식이 평가되기 전에 DevTools 측에서 오류가 발생한 경우 설정합니다.
-
세부정보
모두[]
표현식이 평가되기 전에 DevTools 측에서 오류가 발생한 경우 설정합니다. 여기에는 오류 원인에 대한 추가 정보를 제공하기 위해 설명 문자열에 대체할 수 있는 값의 배열이 포함됩니다.
-
isError
부울
표현식이 평가되기 전에 DevTools 측에서 오류가 발생한 경우 설정합니다.
-
isException
부울
평가된 코드가 처리되지 않은 예외를 생성하는 경우 설정됩니다.
-
값
문자열
평가된 코드가 처리되지 않은 예외를 생성하는 경우 설정됩니다.
-
-
getResources()
chrome.devtools.inspectedWindow.getResources(
callback: function,
)
검사된 페이지에서 리소스 목록을 검색합니다.
reload()
chrome.devtools.inspectedWindow.reload(
reloadOptions?: object,
)
검사된 페이지를 새로고침합니다.
매개변수
-
reloadOptions
객체(선택사항)
-
ignoreCache
불리언 선택사항
true인 경우 로더가
load
이벤트가 실행되기 전에 로드된 검사된 모든 페이지 리소스의 캐시를 우회합니다. 검사한 창이나 개발자 도구 창 내에서 Ctrl+Shift+R을 누르는 것과 유사한 효과입니다. -
injectedScript
문자열(선택사항)
지정하면 로드 즉시, 프레임의 스크립트 전에 검사된 페이지의 모든 프레임에 스크립트가 삽입됩니다. 후속 새로고침 후에는 스크립트가 삽입되지 않습니다(예: 사용자가 Ctrl+R을 누르는 경우).
-
userAgent
문자열(선택사항)
지정하면 문자열이 검사된 페이지의 리소스를 로드하는 동안 전송된
User-Agent
HTTP 헤더의 값을 재정의합니다. 이 문자열은 검사된 페이지 내에서 실행 중인 스크립트로 반환되는navigator.userAgent
속성의 값도 재정의합니다.
-
이벤트
onResourceAdded
chrome.devtools.inspectedWindow.onResourceAdded.addListener(
callback: function,
)
검사된 페이지에 새 리소스가 추가되면 실행됩니다.
onResourceContentCommitted
chrome.devtools.inspectedWindow.onResourceContentCommitted.addListener(
callback: function,
)
리소스의 새 버전이 커밋되면 실행됩니다 (예: 사용자가 개발자 도구에 리소스의 수정된 버전을 저장함).