I have a web application that store information about recently visited pages, let's call them A. When a user visits another page type, called B, I render a menu at the top with a button to point to the most recently visited A-page. The B-pages are accessible either through an A page or a B page and can by the user be considered a property of A.
This works fine but it becomes a problem when someone opens two tabs and when being on a B-page in tab 1 with a link to the A-page A1 they open a new tab and visits the A-page A2. When the user then refreshes the B-page in tab 1 the menu changes to A2. I'd like to be able to identify what tab is being used so that I can save A1 for tab 1 so that it doesn't change to A2.
When using one tab:
A1 -> B1 -> B2 (the menu points back to A1)
When using two tabs:
Time | T1 | T2 | T3
----------------+----------+----------+-------------
Tab 1: | A1 -> B1 | | [refresh B1]
Tab 2: | | A2 -> B3 |
----------------+----------+----------+-------------
Menu points to: | A1 A1 | A2 A2 | A2
This confuses the users when they back in tab 1 comes to the user they were viewing in tab 2 (A2) instead of A1.
I'm afraid that it isn't possible to get the browser tab ID but someone might have any ideas of a workaround?
Edit: The passage of time has rendered my original answer from 2012 incorrect. As bedrin points out, you may now use the Window.sessionStorage
object:
The sessionStorage property allows you to access a session Storage object for the current origin. sessionStorage is similar to Window.localStorage, the only difference is while data stored in localStorage has no expiration set, data stored in sessionStorage gets cleared when the page session ends. A page session lasts for as long as the browser is open and survives over page reloads and restores. Opening a page in a new tab or window will cause a new session to be initiated, which differs from how session cookies work.
Original Answer (2012):
I am afraid this won't be possible in a portable way, as you have found out yourself it is not possible to retrieve something like a browser tab ID. The HTML standards are, as far as I am aware, completely unaware of tabs in browsers.
The only workaround I can think is would be this: Implement and mange tabs in your application. I have seen several business web applications that do this, but (imho) the user experience is quite bad.