사용자의 Tab 정보를 활용하여 화면을 제어하기 때문에, permissions을 추가
/* manifest.json */
...
"permissions": [
"...", "tabs", "scripting"
],
"host_permissions":[ /* 특정 URL에 script 주입을 위한 권한 */
"http://*/",
"https://*/"
],
...
다양한 브라우저 event들을 monitoring하여 작업을 수행하는 코드를 작성한다
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab)=>{
if(changeInfo.status === 'complete'){
/* 탭 정보 변경 후, 수행할 로직 작성 */
}
});
tabId
: 변경된 탭의 IDchangeInfo
: 변경된 내용tab
: 변경된 탭 Objectstatus == complete
를 체크해주지 않을 시, 로딩 중 다양한 변화에도 Listner가 작동하여 불필요한 호출이 반복된다.chrome.storage.sync.get((result) => {
for(value in result){
if(tab.url.includes(value)){
/* 제어 대상 URL일 경우 */
}
}
});
차단 방식: 화면 Black 처리
chrome.scripting.executeScript({
target: {tabId: tabId},
func: ()=>{document.body.appendChild(warningDiv)}
});