Структура папок
manifest.json
— Для каждого расширения требуется файл в формате JSON с именем manifest.json, в котором содержится важная информация. Этот файл должен находиться в корневом каталоге расширения. "Больше информации"
Давайте посмотрим, как выглядит manifest.json
{ "name": "Ghost CSS Detector", "version": "1.0.3", "description": "Find the ghost css in your app in a single click.", "manifest_version": 3, "author": "Shrihari Mohan", "action": { "default_icon": { "48": "assets/icon.png", "96": "assets/icon.png" } }, "icons": { "48": "assets/icon.png", "96": "assets/icon.png" }, "host_permissions": ["<all_urls>"], "permissions": ["scripting"], "background": { "service_worker": "bg-ghost.js" } }
Это некоторые шаблоны, о которых вы можете узнать больше здесь
Некоторые важные свойства из manifest.json
host_permissions
— указывает Домен, для которого должно быть разрешено расширение. По моим требованиям это должно быть разрешено для всех URL-адресов. Еще от Google Dev
permissions
— предоставляет вашему расширению доступ к API chrome.scripting. Подробнее о разрешениях.
background.service_worker
— Здесь мы включаем/отключаем css.
Давайте посмотрим на наш призрачный css и service worker.
* { background: #171717 !important; color: #EDEDED !important; outline: solid #DA0037 1px !important; } // Insert Ghost Css const addGhostCss = async (tabId) => { await chrome.scripting.insertCSS({ files: ["ghost.css"], target: { tabId }, }); //Setting Custom ON/OFF Bg color chrome.action.setBadgeBackgroundColor({ color: "#DA0037", tabId }); } // Remove Ghost Css const removeGhostCss = async (tabId) => { await chrome.scripting.removeCSS({ files: ["ghost.css"], target: { tabId }, }); //Setting Custom ON/OFF Bg color chrome.action.setBadgeBackgroundColor({ color: "#171717", tabId }); } // Capture the onClick of the ghost icon at the top bar. chrome.action.onClicked.addListener(async (tab) => { // Getting the state of previous badgeText const prevState = await chrome.action.getBadgeText({ tabId: tab.id }); const nextState = prevState === 'ON' ? 'OFF' : 'ON' if ( nextState == 'ON') { await addGhostCss(tab.id) } else { await removeGhostCss(tab.id) } chrome.action.setBadgeText({text: nextState , tabId: tab.id }); }); // Setting Default Value chrome.runtime.onInstalled.addListener(() => { chrome.action.setBadgeText({ text: "OFF" }); chrome.action.setBadgeBackgroundColor({ color: "#171717" }); });
Если вам понравилось расширение и вы его используете, просмотрите его и внесите предложения по улучшению. Оставить отзыв | Нажмите, чтобы создать задачу.
Мир 🕊
Если вы здесь, значит, вам понравилось читать этот блог. Просто следуйте за мной Шрихари Мохан, что будет мотивировать писать больше.
Можно приготовить напиток Пахта 🥛. Небольшая поддержка имеет большое значение!
Подпишитесь Если хотите получать эти блоги на почту от @Medium бесплатно!