I want to execute a content script function whenever a tab is updated. The problem is that, sometimes the tab update is ajax (without a page reload), while still changing th
Implementing an include guard is extremely easy:
(function() {
if (window.hasRun) return;
window.hasRun = true;
// Rest of code
})();
If you want to programatically inject a content script, consider using one of the webNavigation events (e.g. onCommitted) instead of chrome.tabs.onUpdated. Unlike the tabs
events, the webNavigation events are also triggered for navigation within frames, and offer a way to declare an URL filter in advance.