Mam proste rozszerzenie do przeglądarki Chrome, które używa funkcji skryptu zawartości do modyfikowania witryny internetowej. Dokładniej rzecz biorąc, background-image
wspomniana witryna.
Z jakiegoś powodu nie mogę używać lokalnych obrazów, mimo że są one spakowane w rozszerzeniu.
body {
background: #000 url('image.jpg') !important;
background-repeat: repeat !important;
}
To wszystko, najprostszy CSS ... ale to nie zadziała. Przeglądarka nie ładuje obrazu.
css
google-chrome-extension
background-image
Bjarki Jonasson
źródło
źródło
Odpowiedzi:
Adres URL Twojego obrazu powinien wyglądać tak
chrome-extension://<EXTENSION_ID>/image.jpg
Lepiej byłoby zastąpić css przez javascript. Z dokumentów :
źródło
Chrome obsługuje i18n, co zapewnia możliwość odniesienia się do rozszerzenia w CSS. Trzymam obrazy w folderze obrazów w rozszerzeniu, więc odwołuję się do zasobów w CSS w następujący sposób:
źródło
Istnieje wiele starszych odpowiedzi i rozwiązań na to pytanie.
Od sierpnia 2015 r. (Przy użyciu przeglądarki Chrome 45 i Manifest w wersji 2) aktualne „sprawdzone metody” tworzenia linków do obrazów lokalnych w rozszerzeniach Chrome metoda jest następująca.
1) Połącz z zasobem w CSS, używając względnej ścieżki do folderu z obrazami rozszerzenia:
2) Dodaj pojedynczy zasób do sekcji web_accessible_resources w pliku manifest.json rozszerzenia:
Uwaga: ta metoda jest odpowiednia dla kilku plików, ale nie skaluje się dobrze w przypadku wielu plików.
Zamiast tego lepszą metodą jest wykorzystanie obsługi wzorców dopasowania przez Chrome do białej listy wszystkich plików w danym katalogu:
Skorzystanie z tego podejścia pozwoli Ci szybko i bez wysiłku używać obrazów w pliku CSS rozszerzenia Chrome przy użyciu natywnie obsługiwanych metod.
źródło
Jedną z opcji byłaby konwersja obrazu na base64:
a następnie umieść dane bezpośrednio w swoim CSS, na przykład:
Chociaż może nie być to podejście, którego chciałbyś używać podczas regularnego tworzenia strony internetowej , jest to świetna opcja ze względu na niektóre ograniczenia związane z budowaniem rozszerzenia Chrome.
źródło
Moje rozwiązanie.
W Menifest v2 musisz dodać
web_accessible_resources
do pliku, a następnie użyćchrome-extension://__MSG_@@extension_id__/images/pattern.png
jako URL w pliku css.CSS:
Manifest.json
ps Twój plik manifest.json może wyglądać inaczej niż ten.
źródło
Ta wersja CSS działa tylko w środowisku rozszerzenia (strona aplikacji, strona podręczna, strona w tle, strona opcji), a także pliku CSS content_scripts.
W pliku .less zawsze ustawiam zmienną na początku:
Później, jeśli chcesz odnieść się do obrazów rozszerzenia-lokalnego-zasobu, użyj:
źródło
Należy wspomnieć, że w zasobach web_accessible_resources można używać symboli wieloznacznych. Więc zamiast
„images / pattern.png”
Możesz użyć
"zdjęcia/*"
źródło
Dla wyjaśnienia, zgodnie z dokumentacją , każdy plik w rozszerzeniu jest również dostępny pod bezwzględnym adresem URL, takim jak ten:
Zwróć uwagę, że
<extensionID>
jest to unikalny identyfikator, który system rozszerzeń generuje dla każdego rozszerzenia. Aby zobaczyć identyfikatory wszystkich wczytanych rozszerzeń, przejdź do adresu URL chrome: // extensions . Plik<pathToFile>
jest lokalizacja pliku w głównym folderze rozszerzenia; jest taki sam jak względny adres URL....
Zmiana obrazu tła w CSS:
Zmiana obrazu tła w CSS poprzez JavaScript:
Zmiana obrazu tła w CSS poprzez jQuery:
źródło