monitoring history.pushstate from a chrome extension
Not sure whether you trying to do this in background.js or content.js, but if it is the former, you can do so using webNavigation events:
You need to set permissions for webNavigation
in manifest.json:
"permissions": [
"webNavigation"
],
Then in background.js:
chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) {
console.log('Page uses History API and we heard a pushSate/replaceState.');
// do your thing
});
Source: Chrome Extension docs for webNavigation
Yes,
One way is to create a script tag and put your code there:
html = "window.history.pushState = function(a,b,c) { alert('Change !'); };";
var headID = document.getElementsByTagName("head")[0];
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.innerHTML = html;
headID.appendChild(newScript);