Daj użytkownikom różne możliwości

Dzięki rozszerzeniom użytkownicy mogą dostosowywać przeglądarkę Chrome, natomiast strona opcji umożliwia na jego dostosowanie. Włącz funkcje i daj użytkownikom wybór która funkcja odpowiada ich potrzebom.

Znajdowanie strony opcji

Użytkownicy mogą otworzyć stronę opcji, klikając link bezpośredni lub prawym przyciskiem myszy ikonę rozszerzenia na pasku narzędzi, a następnie wybierając opcje. Użytkownicy mogą też przejść na stronę opcji. W tym celu mogą najpierw otworzyć chrome://extensions, znaleźć odpowiednie rozszerzenie, kliknąć Szczegóły, a następnie wybrać link opcji.

Link do strony opcji w interfejsie
Link do strony Opcje.
Strona opcji menu kontekstowego
Prawym przyciskiem myszy kliknij ikonę rozszerzenia.

Tworzenie strony opcji

Oto przykład strony opcji:

options.html:

<!DOCTYPE html>
<html>
  <head>
    <title>My Test Extension Options</title>
  </head>
  <body>
    <select id="color">
      <option value="red">red</option>
      <option value="green">green</option>
      <option value="blue">blue</option>
      <option value="yellow">yellow</option>
    </select>

    <label>
      <input type="checkbox" id="like" />
      I like colors.
    </label>

    <div id="status"></div>
    <button id="save">Save</button>

    <script src="options.js"></script>
  </body>
</html>

Poniżej znajduje się przykładowy skrypt opcji. Zapisz go w tym samym folderze co options.html. Dzięki temu opcje preferowane przez użytkownika zostaną zapisane na różnych urządzeniach za pomocą interfejsu API storage.sync.

options.js:

// Saves options to chrome.storage
const saveOptions = () => {
  const color = document.getElementById('color').value;
  const likesColor = document.getElementById('like').checked;

  chrome.storage.sync.set(
    { favoriteColor: color, likesColor: likesColor },
    () => {
      // Update status to let user know options were saved.
      const status = document.getElementById('status');
      status.textContent = 'Options saved.';
      setTimeout(() => {
        status.textContent = '';
      }, 750);
    }
  );
};

// Restores select box and checkbox state using the preferences
// stored in chrome.storage.
const restoreOptions = () => {
  chrome.storage.sync.get(
    { favoriteColor: 'red', likesColor: true },
    (items) => {
      document.getElementById('color').value = items.favoriteColor;
      document.getElementById('like').checked = items.likesColor;
    }
  );
};

document.addEventListener('DOMContentLoaded', restoreOptions);
document.getElementById('save').addEventListener('click', saveOptions);

Na koniec dodaj uprawnienie "storage" do pliku manifest rozszerzenia:

manifest.json:

{
  "name": "My extension",
  ...
  "permissions": [
    "storage"
  ]
  ...
}

Deklarowanie działania strony opcji

Istnieją 2 typy stron z opcjami rozszerzeń: pełne strony i umieszczone. Typ strony opcji zależy od sposobu jej zadeklarowania w pliku manifestu.

Opcje pełnoekranowe

W nowej karcie otworzy się cała strona z opcjami. Zarejestruj plik HTML opcji w pliku manifestu w polu "options_page".

manifest.json:

{
  "name": "My extension",
  ...
  "options_page": "options.html",
  ...
}
. Opcje pełnoekranowe
Opcje pełnoekranowe w nowej karcie.

Umieszczone opcje

Strona Opcje umieszczone na stronie umożliwia użytkownikom dostosowanie opcji rozszerzeń bez opuszczania do zarządzania rozszerzeniami w umieszczonym polu. Aby zadeklarować opcje osadzone, zarejestruj kod HTML w polu "options_ui" w pliku manifestu rozszerzenia z kluczem "open_in_tab" ustawionym na false.

manifest.json:

{
  "name": "My extension",
  ...
  "options_ui": {
    "page": "options.html",
    "open_in_tab": false
  },
  ...
}
. Umieszczone opcje
Umieszczone opcje.
page (ciąg znaków)
Określa ścieżkę do strony opcji względem katalogu głównego rozszerzenia.
open_in_tab (wartość logiczna)
Wskazuje, czy strona z opcjami rozszerzenia będzie otwierana w nowej karcie. Jeśli zasada ma wartość false, strona opcji rozszerzenia jest umieszczona w chrome://extensions, a nie otwierana w nowej karcie.

Weź pod uwagę różnice

Działanie stron opcji umieszczonych w komponencie chrome://extensions nieznacznie różni się od działania stron opcji na kartach.

Link do strony z opcjami

Rozszerzenie może zawierać bezpośredni link do strony opcji za pomocą połączenia chrome.runtime.openOptionsPage() Można je na przykład dodać do wyskakującego okienka:

popup.html:

<button id="go-to-options">Go to options</button>
<script src="popup.js"></script>

popup.js:

document.querySelector('#go-to-options').addEventListener('click', function() {
  if (chrome.runtime.openOptionsPage) {
    chrome.runtime.openOptionsPage();
  } else {
    window.open(chrome.runtime.getURL('options.html'));
  }
});

Interfejs Tabs API

Ponieważ umieszczony kod opcji nie jest hostowany na karcie, nie można używać interfejsu Tabs API. Zamiast nich używaj runtime.connect() i runtime.sendMessage(). .

Interfejsy API do przesyłania wiadomości

Jeśli strona opcji rozszerzenia wysyła wiadomość przy użyciu runtime.connect() lub runtime.sendMessage(), karta nadawcy nie zostanie ustawiona, a adres URL nadawcy będzie adresem URL strony opcji.

Rozmiary

Umieszczone opcje powinny automatycznie określać swój rozmiar na podstawie zawartości strony. Pamiętaj jednak: rozmiar umieszczonego pola może być nieodpowiedni w przypadku niektórych typów treści. Ten problem występuje najczęściej w przypadku stron z opcjami, które dostosowują kształt treści w zależności od rozmiaru okna.

Jeśli jest to problem, podaj stałe minimalne wymiary strony opcji, by mieć pewność, że która znajdzie się w odpowiednim rozmiarze.