When my chrome extension loads on chrome startup, everything seems to be ok and chrome.extension.getBackgroundPage() returns the right value (lunched from popup.js). But after awhile (2-3 minutes), especially if the browser is let alone, the function returns null. Only closing and re-opening chrome solves the problem. I tried to manipulate it by:
if (chrome.extension.getBackgroundPage() == null) window.location.reload(true);
As suggested at Why does chrome.extension.getBackgroundPage() return null?, which sometimes helps, but most of the times it just keeps refreshing the app so that chrome must be closed. Does anybody have an idea what could be wrong?
According to the referenced page (Difference between Event and Background Page) there is a better option to get the background while still using Event Page :
This worked well for me, just do your job in the asynchronous callback, which receives the background page as a function parameter.
Here is the specification of the method runtime.getBackgroundPage
Change your background(Event Page) to a real background Page.
Modify your manifest file from
to
Event pages are very similar to background pages, with one important difference: event pages are loaded only when they are needed. When the event page is not actively doing something, it is unloaded, freeing memory and other system resources.
Reference