As far as I know, the browser treats each window as a separate memory space (so shared objects are right out) and each reload/refresh event as a total restart. You could try being clever with localStorage (although rapid-fire clicks would probably lead to a race condition as you can't really guarantee instantiation order of the tabs, I imagine).
It would also be helpful to store all relevant variables in your path, but if that's not available, you may need to look into using some kind of cross-window communication. I *think* (I've never actually tried this) that a tab opened via open-in-new-tab maintains a reference to the parent window in window.opener, so could get get clever with all kinds of message events.
Best bet is storing unreconstructable state in the URL, I think. That seems to me like what it's for.
e