Рубрики
Без рубрики

Как построить хромированный плагин

Хромированные плагины развлекаются и могут быть полезным и персонализированным способом начать свой день. Лучшая часть – это … Tagged CodeNewie, JavaScript.

Хромированные плагины развлекаются и могут быть полезным и персонализированным способом начать свой день.

Лучшая часть – это фактически относительно просты.

Все, что вам нужно, это HTML, CSS и JS.

Основная настройка

Основная настройка настолько базовая, я обнаружил, что уставился на мой компьютер, говоря, что?

Создание Mainest.json file Документация Chrome на самом деле велик и в глубине, если вы хотите узнать больше Но для этого вилка в манифесте будет голые кости:

{
  "manifest_version": 2,
  "name": "Chrome plugin template Devto",
  "description": "Chrome plugin template Devto",
  "version": "1",
  "author": "Jenny Judova",
  "browser_action": {
    "default_title": "Fun with Flags"
  },
  "chrome_url_overrides": {
    "newtab": "newtab.html"
  },
  "permissions": [
    "activeTab",
    "storage"
  ]
}

Распечатать Hello World

Теперь давайте сделаем вещь и напечатайте «Hello World».

В Mainest.json chrome_url_overrids мы заявили, что новая вкладка переопределяет HTML-файл называется NewTab.html, поэтому давайте создам этот файл.

newtab.html.






  



  

Hello World!

Это здорово, но как мы проверим, работало ли это? Мы не можем пойти в локальный хост для этого. Вместо этого сделайте это: 1 – перейдите в Chrome://расширения/2 – Убедитесь, что переключатель режима разработчика включен 3 – нажмите на загрузочную кнопку 4 – выберите папку с вашим проектом 5 – Нажмите «Выбрать» 6 – Откройте новую вкладку

Груз!

Теперь давайте сделаем это расширение сделать что-то вроде шоу флагов и стран. Не судите весело с флагами, которые я выбрал флаг API, поскольку он не требует токена.

Как сделать вызов API

Давайте создадим файл под названием NewTab.js и связать его в NewTab.html, добавив


Непосредственно перед закрытием тега тела. Давайте сделаем чек здравомыслия и в новых tab.js Добавить

function init() {

  console.log('HI')

}

window.addEventListener('DOMContentLoaded', init)

Простой. Отечень должен сделать трюк для вызова API. Вот так:

  function getAllFlags() {
    fetch('https://restcountries.eu/rest/v2/all?fields=name;flag;region;nativeName;')
      .then(response => response.json())
      .then(response => {
        flags = response
        chrome.storage.local.set({ data: flags });
      })
      .catch(err => console.log(err))

У нас есть информация о флагах, теперь позволяет отображать их в интерфейсе интерфейса, добавив функцию для их отображения и некоторых CSS, для этого стоит смотреть на Github проекта Отказ

Как использовать Chrome.Storage.local

Способ расширения работает в данный момент, заключается в том, что каждый раз, когда вы открываете новую вкладку, происходит новый вызов API. Учитывая большую часть нас открывают дюжину вкладки каждый час, что может быть более эффективно хранить ответ запроса в Chrome.Storage.local И проверить, имеет ли он данные перед запуском вызова на API.

Для достижения этого мы должны использовать Chrome.Storage.local.Set. и Chrome.Storage.local.get

Также убедитесь, что избежать этого Общая подводная масса – Убедитесь, что ваш манифест.

  "permissions": [
    "storage"
  ]

Чтобы сохранить что-то в локальном хранилище, позволяет добавить эту строку в запрос Fetch

Chrome.Storage.local.Set ({данные: флаги});

Так что все это будет выглядеть так:

fetch('https://restcountries.eu/rest/v2/all?fields=name;flag;region;nativeName;')
        .then(response => response.json())
        .then(response => {
          console.log('empty')
          flags = response
          chrome.storage.local.set({ data: flags });
        })
        .catch(err => console.log(err))

Давайте добавим функцию, которая проверит локальное хранилище.

  function checkLocalStorage() {
    chrome.storage.local.get('data', function (result) {
      result.data == undefined ? isLocalStorageFull = false : isLocalStorageFull = true
      getAllFlags(isLocalStorageFull)
    });
  }

Давайте также обновим функцию GetAllFlags для:

  function getAllFlags(isLocalStorageFull) {
    if (isLocalStorageFull) {
      chrome.storage.local.get('data', function (result) {
        flags = result.data
        displayFlags(flags)
      })
    } else {
      fetch('https://restcountries.eu/rest/v2/all?fields=name;flag;region;nativeName;')
        .then(response => response.json())
        .then(response => {
          flags = response
          chrome.storage.local.set({ data: flags });
          displayFlags(flags)
        })
        .catch(err => console.log(err))
    }
  }

По сути, это наша подключаемость. Не стесняйтесь добавлять свои собственные CSS или копировать пасту из готового приложения здесь Отказ

Это то, с чем мы в конечном итоге.

Оригинал: “https://dev.to/jennyjudova/how-to-build-a-chrome-plugin-4jg2”