๋ฐ์ํ
[ manifest.json ]
์ฌ์ฉ์์ Tab ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ํ๋ฉด์ ์ ์ดํ๊ธฐ ๋๋ฌธ์, permissions์ ์ถ๊ฐ
/* manifest.json */
...
"permissions": [
"...", "tabs", "scripting"
],
"host_permissions":[ /* ํน์ URL์ script ์ฃผ์
์ ์ํ ๊ถํ */
"http://*/",
"https://*/"
],
...
[ Background JS ]
๋ค์ํ ๋ธ๋ผ์ฐ์ event๋ค์ monitoringํ์ฌ ์์ ์ ์ํํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค
ํญ URL ๋ณ๊ฒฝ ๊ฐ์ง
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab)=>{
if(changeInfo.status === 'complete'){
/* ํญ ์ ๋ณด ๋ณ๊ฒฝ ํ, ์ํํ ๋ก์ง ์์ฑ */
}
});
- ํญ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ฐ์
- tabId: ๋ณ๊ฒฝ๋ ํญ์ ID changeInfo: ๋ณ๊ฒฝ๋ ๋ด์ฉ tab: ๋ณ๊ฒฝ๋ ํญ Object
- ํ์ํ changeInfo: status ( unloaded / loading / complete )
- ⇒ status == complete ๋ฅผ ์ฒดํฌํด์ฃผ์ง ์์ ์, ๋ก๋ฉ ์ค ๋ค์ํ ๋ณํ์๋ Listner๊ฐ ์๋ํ์ฌ ๋ถํ์ํ ํธ์ถ์ด ๋ฐ๋ณต๋๋ค.
์ ์ฅ๋์ด ์๋ ์ ์ด ๋์ URL๊ณผ ๋น๊ต
chrome.storage.sync.get((result) => {
for(value in result){
if(tab.url.includes(value)){
/* ์ ์ด ๋์ URL์ผ ๊ฒฝ์ฐ */
}
}
});
- chrome storage์ ์ ์ฅ๋์ด ์๋ URL ๋ชฉ๋ก์ ๋ถ๋ฌ์ด
- tab Object์ URL ์์ฑ๊ณผ Storage value๋ฅผ ๋น๊ต
์ ์ด ํญ ์ฐจ๋จ
์ฐจ๋จ ๋ฐฉ์: ํ๋ฉด Black ์ฒ๋ฆฌ
chrome.scripting.executeScript({
target: {tabId: tabId},
func: ()=>{document.body.appendChild(warningDiv)}
});
- target์ ์์ฑ๋ script๋ฅผ ์ฃผ์ ํ์ฌ ์คํ ์ํด
[ ๊ฒฐ๊ณผ ]
๋ฐ์ํ
'๐ป ๊ฐ๋ฐ ์ผ์ง > FrontEnd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[chrome extension] setInterval ํ์ด๋จธ (0) | 2022.03.24 |
---|---|
[Chrome Extension] ์น ํ์ด์ง ์ฐ๋ ํ์ด๋จธ ๊ตฌํํ๊ธฐ (0) | 2022.03.17 |
[Chrome Extension] Chrome Storage๋ฅผ ํ์ฉํ Extension ๋ง๋ค๊ธฐ (0) | 2022.03.16 |