Działania związane z rozszerzeniami w platformie Manifest V3

Od wprowadzenia na rynek rozszerzeń do Chrome platforma pozwala deweloperom udostępniać rozszerzenia bezpośrednio w interfejsie Chrome najwyższego poziomu za pomocą działań. Akcja to przycisk ikony, który może otworzyć wyskakujące okienko lub aktywować niektóre funkcje w rozszerzeniu. Wcześniej w Chrome były obsługiwane typy działań, działań w przeglądarce i działań na stronie; Platforma Manifest V3 zmieniła tę sytuację, konsolidując funkcje w nowym interfejsie API chrome.action.

Krótka historia działań rozszerzeń

Sama usługa chrome.action jest nowa w platformie Manifest V3, ale jej podstawowe funkcje sięgają wstecz do momentu, gdy rozszerzenia po raz pierwszy pojawiły się w stabilnej wersji w styczniu 2010 roku. Pierwsza stabilna platforma rozszerzeń Chrome obsługiwała dwa rodzaje działań: przeglądarka działania i działania na stronie.

Dzięki czynnościom w przeglądarce twórcy rozszerzeń mogli wyświetlać ikonę „na głównym pasku narzędzi Google Chrome, na prawo od paska adresu”. (źródło) i udostępniliśmy użytkownikom uruchomić funkcję rozszerzenia na dowolnej stronie. Działania na stronie miały natomiast „reprezentują działania, które można wykonać na bieżącej stronie, ale nie dotyczą wszystkich stron”. (źródło).

W omniboksie pojawi się działanie strony (w lewo), co oznacza, że rozszerzenie może coś zrobić na tej stronie. Czynność przeglądarki (po prawej) jest zawsze widoczna.

Innymi słowy, działania przeglądarki zapewniły programistom rozszerzeń stały interfejs użytkownika w przeglądarce. a działania na stronie pojawiały się tylko wtedy, gdy rozszerzenie mogło zrobić coś przydatnego na bieżącej stronie.

Oba rodzaje działań były opcjonalne, więc deweloper rozszerzenia mógł zdecydować się na nie. działania, działania na stronie lub w przeglądarce (określanie wielu działań jest niedozwolone).

Mniej więcej 6 lat później w Chrome 49 wprowadziliśmy nowy model UI rozszerzeń. Aby pomóc użytkownicy wiedzą, jakie rozszerzenia mają, Chrome zaczął wyświetlać wszystkie aktywne rozszerzenia po prawej stronie omniboksu. Użytkownicy mogą się „przekroczyć” rozszerzenia do menu Chrome.

W menu Chrome pojawią się ukryte ikony rozszerzeń.

Aby pokazywać ikony poszczególnych rozszerzeń, ta aktualizacja spowodowała też wprowadzenie dwóch ważnych zmian w jak rozszerzenia działały w interfejsie Chrome. Po pierwsze, wszystkie rozszerzenia zaczęły wyświetlać ikony na pasku narzędzi. Gdyby rozszerzenie nie miało ikony, Chrome automatycznie ją wygenerowała. Po drugie, działania na stronie została przeniesiona na pasek narzędzi obok działań przeglądarki i otrzymała rolę między „programem” i „ukryj” stanów.

Wyłączone działanie na stronie (po lewej) jest renderowane na pasku narzędzi jako obraz w skali szarości, a włączone (po prawej) jest wyświetlane w pełnym kolorze.

Dzięki tej zmianie rozszerzenia działań na stronie mogły nadal działać zgodnie z oczekiwaniami, ale zmniejszyły się też roli działań na stronie w czasie. Zmiana wyglądu interfejsu polegała na tym, że czynności wykonywane na stronach podjęte przez działania przeglądarki. Wszystkie rozszerzenia pojawiały się na pasku narzędzi, dlatego użytkownicy że kliknięcie ikony rozszerzenia na pasku narzędzi spowoduje wywołanie rozszerzenia, stały się coraz ważniejszym aspektem rozszerzeń do Chrome.

Zmiany w pliku manifestu w wersji 3

Po wprowadzeniu interfejsu rozszerzeń w 2016 roku interfejs i rozszerzenia do Chrome nieustannie ewoluowały. ale działania w przeglądarce i działania na stronach pozostały bez zmian. Oznacza to, że przynajmniej do czasu, zaczęliśmy planować, jak zmodernizować platformę rozszerzeń za pomocą platformy Manifest V3.

Zespół ds. rozszerzeń zauważył, że działania w przeglądarce i na stronie nie ma znaczenia. Co gorsza, subtelne różnice w działaniu sprawiają, że deweloperzy aby zdecydować, którego użyć. Zauważyliśmy, że można rozwiązać te problemy, łącząc przeglądarkę działanie i działanie strony w jedną „działanie”.

Wpisz interfejs Action API. Parametr chrome.action jest najbardziej bezpośrednim odpowiednikiem argumentu chrome.browserAction, ale występuje kilka istotnych różnic.

Najpierw chrome.action przedstawia nową metodę o nazwie getUserSettings(). Ta metoda pozwala programistom rozszerzeń sprawdzić, czy użytkownik przypiął działanie rozszerzenia do na pasku narzędzi.

let userSettings = await chrome.action.getUserSettings();
console.log(`Is the action pinned? ${userSettings.isOnToolbar ? 'Yes' : 'No'}.`);

"getUserSettings" Nazwa tej funkcji może wydawać się nieco nietypowa w porównaniu do „isPinned”, ale z historii działań w Chrome wynika, że interfejs przeglądarki zmienia się szybciej niż za pomocą interfejsów API rozszerzeń. W związku z tym celem tego interfejsu API jest pokazanie preferencji użytkowników dotyczących działań z ogólnymi interfejsami, aby zminimalizować ryzyko rezygnacji z interfejsów API w przyszłości. Pozwala to też innym dostawcom przeglądarek ujawniać typowe dla przeglądarki pojęcia interfejsu użytkownika w obiekcie UserSettings zwracanym przez tę funkcję. .

Po drugie, ikoną oraz stanem włączenia/wyłączenia działania rozszerzenia można sterować za pomocą Interfejs API treści deklaracji. To ważne, ponieważ pozwala rozszerzeniom reagować na treści przeglądane przez użytkownika zachowań użytkowników bez dostępu do treści czy adresów URL odwiedzanych przez nich stron. Na przykład Zobacz, jak rozszerzenie może umożliwić działanie, gdy użytkownik odwiedza strony w witrynie example.com.

// Manifest V3
chrome.runtime.onInstalled.addListener(() => {
  chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
    chrome.declarativeContent.onPageChanged.addRules([
      {
        conditions: [
          new chrome.declarativeContent.PageStateMatcher({
            pageUrl: {hostSuffix: '.example.com'},
          })
        ],
        actions: [new chrome.declarativeContent.ShowAction()]
      }
    ]);
  });
});

Powyższy kod jest niemal identyczny z działaniem rozszerzenia w przypadku działania związanego ze stroną. Jedyna różnica polega na tym, że w pliku manifestu V3 użyliśmy declarativeContent.ShowAction zamiast declarativeContent.ShowPageAction na platformie Manifest V2.

Blokady treści mogą też używać interfejsu declarativeNetRequest API setExtensionActionOptions) do wyświetlenia liczby żądań zablokowanych przez rozszerzenie na danej karcie. Ta funkcja jest ważna, ponieważ pozwala programy blokujące treści, które informują użytkowników bez ujawniania potencjalnie poufnych metadanych przeglądania. do rozszerzenia.

Podsumowanie

Modernizacja platformy rozszerzeń do Chrome była jedną z głównych motywacji wdrożenia platformy Manifest V3. W wielu oznaczało przejście na nowe technologie, ale też uproszczenie sposobu korzystania z interfejsów API. i tak się stało.

Mam nadzieję, że ten post pomógł Ci rzucić nieco światła na ten konkretny aspekt platformy Manifest V3. Do aby dowiedzieć się więcej o tym, jak zespół Chrome podchodzi do przyszłości rozszerzeń przeglądarki, odwiedź Platforma Wizja i Omówienie platformy Manifest V3 w naszym dokumentacji dla deweloperów. Rozszerzenia do Chrome możesz też omówić z innymi programistami na chromium-extensions grupy Google.