다른 환경에서 현재 탭을 여는 Chrome 확장 만들기
6138 단어 크롬 확장JavaScripttech
개요
컨텍스트 메뉴에서 환경을 선택하고 현재 열린 탭의hostname을 다시 쓰고 다시 표시하는 Chrome 확장자를 만듭니다
성과물
지정한 페이지에 상하문 메뉴를 표시하고 열린 환경을 선택할 수 있습니다
소스 코드
컨디션
Requirements
$ npm install -g chrome-extension-cli
이루어지다
Chrome 확장의 기본 작성
Chrome Extension CLI를 사용한 프로젝트 제작
$ chrome-extension-cli [project name]
Success가 나타나면 정상적으로 제작Success! Created [project name] at [current dir path]/[project name]
Inside that directory, you can run below commands:
npm run watch
Listens for files changes and rebuilds automatically.
npm run build
Bundles the app into static files for Chrome store.
We suggest that you begin by typing:
1. cd [project name]
2. Run npm run watch
3. Open chrome://extensions
4. Check the Developer mode checkbox
5. Click on the Load unpacked extension button
6. Select the folder [project name]/build
팝업 카운터의 코드가 샘플 코드로 존재하기 때문에 삭제합니다컨텍스트 메뉴 표시
확장된 컨텍스트 메뉴를 표시하려면
permissions
에 contextMenus
를 추가합니다.{
...
"permissions": [
"contextMenus"
]
}
다음 background.js
에 다른 환경에 대한 설정을 적으십시오.매개 변수
설명
id
contextMenus를 클릭할 때 menuItemId
title
표시된 문자열
hostname
대상 호스트
const ENV = {
production: {
id: 'production',
title: 'Production',
hostname: 'https://example.com',
},
staging: {
id: 'staging',
title: 'Staging',
hostname: 'https://example.net',
},
development: {
id: 'development',
title: 'Development',
hostname: 'https://example.edu',
},
};
방금 환경 설정을 바탕으로 상하문 메뉴 추가chrome.runtime.onInstalled.addListener(() => {
const parentId = chrome.contextMenus.create({
id: 'parent',
title: '別の環境で開く',
contexts: ['all'],
documentUrlPatterns: [
ENV.production.hostname + '/*',
ENV.staging.hostname + '/*',
ENV.development.hostname + '/*',
],
});
Object.values(ENV).forEach((_env) => {
chrome.contextMenus.create({
id: _env.id,
title: _env.title,
parentId: parentId,
});
});
});
chrome.runtime.onInstalled.addListener()
확장 기능을 설치한 경우 한 번만 호출chrome.contextMenus.create()
에서 컨텍스트 메뉴 작성매개 변수의 설명은 다음과 같다(더 자세한 정보는 여기..
매개 변수
설명
id
contextMenus를 클릭할 때 menuItemId
title
표시된 문자열
parentId
상위 메뉴의 ID(매개변수의 id 또는
create()
의 반환 값 모두)contexts
표시할 요소 선택
documentUrlPatterns
지정된 URL 모드의 컨텍스트 메뉴만 표시합니다.
다른 환경의 URL 읽기
permissions
에 tabs
를 추가하여 페이지 이동{
...
"permissions": [
"contexMenus",
"tabs"
]
}
상하문 메뉴에서 선택한 환경에서 열기 위해background.js
contextMenus
에서 설정onClicked
const openIn = (hostname, pageUrl) => {
const url = new URL(pageUrl);
chrome.tabs.update(null, { url: hostname + url.pathname + url.search });
};
chrome.contextMenus.onClicked.addListener((info) => {
switch (info.menuItemId) {
case ENV.production.id:
openIn(ENV.production.hostname, info.pageUrl);
break;
case ENV.staging.id:
openIn(ENV.staging.hostname, info.pageUrl);
break;
case ENV.development.id:
openIn(ENV.development.hostname, info.pageUrl);
break;
case 'parent':
break;
default:
console.log('err: clicked undefined menu');
break;
}
});
chrome.contextMenus.onClicked.addListener()
에서 상하문 메뉴를 눌렀을 때의 동작모든 상하문 메뉴를 클릭하면 불이 납니다,
menuItemId
설정 동작을 사용하세요chrome.tabs.update()
에 지정된 URL로 마이그레이션합니다.location.href
의 행동거지(더 자세한 정보는여기.Chrome에 확장 파일 불러오기
확장 생성
$ npm run build
에서 chrome://extensions/로 이동하여 디버그 모드를 ON으로 설정포장되지 않은 확장 읽기 에서 방금 작성한 것을 선택하십시오
[project name]/build
방문https://example.com/, 상하문 메뉴 보이기 완료
참고 자료
Reference
이 문제에 관하여(다른 환경에서 현재 탭을 여는 Chrome 확장 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/meihei/articles/2e73a54c6ea678텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)