I have defined a global object in a .js file. For example file1.js contains the global object SomeObject. This file gets loaded in background.html.
Since file1.js is included in background.html, I am able to access the global object in this page. So no issues here.
When an event like click on the extension button is performed, I am running a content script using the chrome.tabs.executeScript(null, {file: "contentscript.js"}); api.
How can I access SomeObject in the contentscript in this case?
There is no way to get direct access to the background page’s global object from a Content script or injected script.
To use a background page’s method from an injected script , follow these steps:
Whenever you want to notify the method from the background page:
→ The event listener from 1) gets triggered.
chrome.runtime.sendMessageto request the functionality from the background example 2.chrome.runtime.onMessage.chrome.tabs.executeScript(tab.id, func).To use a background page’s method from a Content script, only steps 3 and 4 are needed.
Here’s an example, in which the content script communicates with the background page:
See also