크롬 익스텐션에는 다양한 기능이 제공되는데, 그 중 content scripts를 활용하면 간단한 단축키 기능이 있는 익스텐션을 만들 수 있습니다.
폴더/
├── manifest.json
└── content-script.js
manifest.json
{
"name": "이름",
"version": "1.0",
"manifest_version": 3,
"description": "소개",
"content_scripts": [
{
"matches": ["https://velog.io/"],
"js": ["content-script.js"]
}
]
}
열린 탭의 url이 matches 안에 있는 값과 매칭되면, 해당 페이지 안에서 js 파일이 동작합니다.
content-script.js
document.addEventListener("keydown", (e) => {
console.log(e.key)
});
content script는 해당 페이지 안에서 동작합니다.
그래서 개발자 도구에서 console.log()
한 걸 확인하는 게 가능하며, 이 파일은 키를 누르면 키 이름을 해당 페이지의 콘솔
에 출력할 것입니다.
velog 메인 페이지에서
F2
키를 누르면새 글 작성 페이지
로 이동해주는 확장 프로그램을 만들어보겠습니다.
개발자 도구 콘솔에서 새 글 작성 버튼을 클릭해보고, 그대로 content-script.js
에 붙여넣어서 완성하겠습니다.
velog.io 페이지로 가서 개발자 도구로 새 글 작성 버튼을 확인해보면 아래와 같이 나옵니다 :
<button class="Header_writeButton__BGlkS ...">
새 글 작성
</button>
id
나 class
로 element를 특정해야 하는데, 여기에는 Header_writeButton__BGlkS
라는 클래스가 있으니 이걸로 해보겠습니다.
> document.getElementsByClassName("Header_writeButton__BGlkS")
HTMLCollection(2) [button.RoundButton_block__UPARJ…, button.RoundButton_block__UPARJ…]
HTMLCollection 아이템에다가 마우스를 갖다 대거나 클릭해보면서 찾는 element가 맞는지 확인할 수 있습니다.
> document.getElementsByClassName("Header_writeButton__BGlkS")[1].click()
두 번째 값이 새 글 작성 버튼이므로, 콘솔에서 위처럼 click()
메서드를 써주면 새 글 작성 페이지로 이동합니다.
content-script.js
document.addEventListener("keydown", (e) => {
if (e.key === "F2") {
document.getElementsByClassName("Header_writeButton__BGlkS")[1].click()
}
})
이처럼 F2
키가 눌러지면 새 글 작성 버튼을 클릭하는 스크립트를 짜줍니다.
이제 모든 작성이 끝났습니다.
테스트하는 방법은 다음과 같습니다 :
manifest.json
이 포함된 폴더
를 리스트에 드롭하거나 직접 폴더 열기기본적으로 폴더
또는 zip
파일을 드롭해서 적용시킬 수 있습니다.
개발할 때는 폴더로 테스트하고, 스토어에 올릴 땐 zip 파일을 제출하는 식으로 종종 사용합니다.
F2
외에 다양한 키 입력을 받는 방법keydown
, keyup
에서 인자로 들어오는 값이 KeyboardEvent
라고 합니다.
KeyboardEvent.key
를 많이 쓰고, ctrlKey
, shiftKey
, altKey
, metaKey
등등도 있습니다.
예를 들어 Ctrl+Shift+A
를 만들려면 아래처럼 작성할 수 있습니다.
document.addEventListener("keydown", (e) => {
if (e.ctrlKey && e.shiftKey && e.key === "A") {
console.log("Ctrl+Shift+A!!!")
}
})
수정 : 2025-01-24