조금이라도 참고한 컨텐츠에 대한 모든 출처는 하단에 기재해 두었습니다.
contentscript.js
background.js
popup.js
manifest.json
(package.json과 비슷한 느낌){
"name": "Creating my first extension",
"version": "1.0",
"description": "Build an Extension!",
"background": {
"scripts": ["scripts/background.js"],
"persistent": false
},
"content_scripts": {
"js": ["scripts/content.js"]
},
"permissions": ["storage"],
"browser_action": {
"default_icon": "favicon.png",
"default_popup": "./src/extension/popup.html"
}
"manifest_version": 2
}
content
, background
, pop
)에 따라 경로를 세팅chrome.tabs.executeScript({
code:'document.querySelector("body").innerText'
}, function(result) { // After executing 'code' (callback)
//이 문서에서 body 태그 아래에 있는 모든 텍스트를 가져온다
var bodyText = result[0];
//bodyText의 모든 단어를 추출하고, 그 단어의 숫자를 센다
var bodyNum = bodyText.split(' ').length;
//bodyText에서 자신이 알고 있는 단어(the)가 몇번 등장하는지 체크한다
var myNum = bodyText.match(new RegExp('\\b(the|is|was|of)\\b', 'gi')).length;
var per = myNum/bodyNum*100;
per = per.toFixed(2);
//id 값이 result인 태그에 결과를 추가한다
document.querySelector('#result').innerText = myNum+'/'+bodyNum +'('+ per +'%)';
});
chrome
이라는 객체를 이용해야 한다.function exampleFunction(options) {
chrome.tabs.executeScript(
{ code: "var options = " + JSON.stringify(options) },
function() {
chrome.tabs.executeScript({ file: "content.js" })
}
)
}
function matching(user) {
chrome.tabs.executeScript({
code:'document.querySelector("body").innerText'
}, function(result) {
// After executing 'code'
var bodyText = result[0];
var bodyNum = bodyText.split(' ').length;
var myNum = bodyText.match(new RegExp('\\b('+ user +')\\b', 'gi')).length;
var per = myNum/bodyNum*100;
per = per.toFixed(2);
document.querySelector('#result').innerText = myNum+'/'+bodyNum +'('+ per +'%)';
});
}
// 크롬 스토리지에 저장된 값 가져오기
chrome.storage.sync.get(function(data) {
document.querySelector('#user').value = data.userWords;
matching(data.userWords);
});
// #user 입력 값이 변경되었을 때
document.querySelector('#user').addEventListener('change', function() {
var user = document.querySelector('#user').value;
// 크롬 스토리지에 입력 값 저장
chrome.storage.sync.set({
userWords:user
});
matching(user);
});
// ...
"permissions": [
"activeTab",
**"storage"**
]
// ...
manifest.json
에서 permissions
세팅을 해줘야 한다.나머지는 일반적인 웹 페이지 개발과 같고,
필요한 내용들만 Chrome docs에서 찾아 쓰면 될 듯
Public
: 크롬 웹 스토어에 공개Unlisted
: 링크가 있는 사람들에게만 공개Private
: 개인, 특정인에게만 공개manifest.json
에서 파일의 버전을 올리고 다시 압축한 다음 업로드 → 적당한 타이밍에 사용자들이 설치한 프로그램이 업데이트가 된다.결론 : 가능하다.
webpack
이나socket.io
,fetch
등의 키워드를 중심으로 찾아보면 된다.
특히 깃허브를 뒤지다 보면 webpack
기능이 내장된 확장 프로그램 템플릿도 찾을 수 있는데, 코드 난독화 기능도 제공되어서 굉장히 편리하다.
개인적으로 간단한 실습이나 프로토타입 제작 용으로는 템플릿을 이용하는 게 합리적인 것 같다.
확장 프로그램 개발을 생각하고 있었는데 많은 도움 얻고 갑니다!! (꾸벅)