I start a chrome extension that is triggered on instagram.com. I wanted to load a local font but when I open the extension I get this error when font is loading
GET chrome-extension://invalid/ net::ERR_FAILED
In my network tab when font is loading I have a net::ERR_FAILED
with details:
General
Request URL: chrome-extension://invalid/
Referrer Policy: strict-origin-when-cross-origin
Request Headers
Provisional headers are shown Learn more
DNT: 1
Origin: https://www.instagram.com
Referer
I follow this solution to load local font https://stackoverflow.com/a/54957601/16813072
here is my code
manifest.json
{
...
"content_scripts": [
{
"matches": ["*://*.instagram.com/*"],
"js": ["content_script.js"],
"run_at": "document_start",
"web_accessible_resources": [ "assets/ClashGrotesk-Variable.ttf" ]
}
],
"web_accessible_resources": [
"assets/inject.js",
"assets/ClashGrotesk-Variable.ttf",
],
...
}
app.tsx
I use styled-components
const GlobalStyle = createGlobalStyle`
@font-face {
font-family: 'ClashGrotesk-Variable';
src: url('chrome-extension://__MSG_@@extension_id__/assets/ClashGrotesk-Variable.ttf');
font-weight: 200 700;
font-display: swap;
font-style: normal;
}
html body {
font-family: 'ClashGrotesk-Variable';
}
`
Does my code seems correct ?
Update :
Seems to work with chrome.runtime.getURL
in app.tsx
const url = chrome.runtime.getURL('assets/ClashGrotesk-Variable.ttf')
const GlobalStyle = createGlobalStyle`
@font-face {
font-family: 'ClashGrotesk-Variable';
src: url(${url});
font-weight: 200 700;
font-display: swap;
font-style: normal;
}
html body {
font-family: 'ClashGrotesk-Variable';
}
`
We can use chrome.runtime.getURL API to get the URL of our resource and then we can provide that URL in src of font-face.
const url = chrome.runtime.getURL('assets/ClashGrotesk-Variable.ttf')
const GlobalStyle = createGlobalStyle`
@font-face {
font-family: 'ClashGrotesk-Variable';
src: url(${url});
font-weight: 200 700;
font-display: swap;
font-style: normal;
}
html body {
font-family: 'ClashGrotesk-Variable';
}
`
References