Normally, when you develop content scripts, you’d need to reload the extension in chrome://extensions
to see the changes. A simple page reload is not enough.
Here’s a workaround: Use a content script wrapper which tells the background script to inject the real content script using chrome.scripting
. This way, the latest version of the content script is loaded without the need to reload the extension.
It looks like this.
chrome.runtime.sendMessage({ pageLoaded: true })
Then on the background script, inject content script from there:
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.pageLoaded) {
if (sender.tab && sender.tab.id != null) {
chrome.scripting.executeScript({
target: {
tabId: sender.tab.id,
},
files: ['/dist/content-script.js'],
})
}
}
})