The first time I load up my cordova app, the breakpoint at line 130 (please refer to attached image) gets hit. It calls the deviceready delegate function and everything is fine.

I navigate to another page and then when I do a window.history.back() (back to original page), the deviceready event is fired in a different way (see breakpoint on 135). There is no DeviceInfo which makes the Cordova “not available”. Note the following excerpt from cordova.js:
Cordova.available = DeviceInfo.uuid != undefined;
Which also means, even though I’m waiting for the deviceready event to call Cordova.exec, it will always fail. Here is another excerpt from cordova.js which illustrates why.
Cordova.exec = function() {
if (!Cordova.available) {
alert("ERROR: Attempting to call Cordova.exec()"
+" before 'deviceready'. Ignoring.");
return;
}
So my question is; why are there 2 ways cordova will call the deviceready and why does it use the ‘dud’ way when I arrive at the page by going back on my browser?
This looks to be version 1.5 or earlier. The loading and firing of deviceReady has significantly changed in more recent versions.