24

I asked this question before but didn't make it clear that I meant in user script, not in JavaScript from a webpage.So I'll be more clear now.

Is it possible to determine if Google Chrome is in incognito mode via a user-script (basically a script run as an extension in the browser, not a script being run on a webpage)?

Josh Lee
  • 171,072
  • 38
  • 269
  • 275
RodeoClown
  • 13,338
  • 13
  • 52
  • 56

3 Answers3

11

To detect whether a window is in incognito mode, check the incognito property of the relevant Tab or Window object. For example:

var bgPage = chrome.extension.getBackgroundPage();

function saveTabData(tab, data) {
  if (tab.incognito) {
    bgPage[tab.url] = data;       // Persist data ONLY in memory
  } else {
    localStorage[tab.url] = data; // OK to store data
}

http://code.google.com/chrome/extensions/overview.html

Sharjeel Aziz
  • 8,495
  • 5
  • 38
  • 37
8

If you are developing an Extension then you can use the tabs API to determine if a window/tab incognito.

More information can be found on code.google.com.

If you are just working with a webpage or a userscript, it is not easy, and it is designed to be that way. However, I have noticed that all attempts to open a database (window.database) fail when in incongnito, this is because when in incognito no trace of data is allowed to be left on the users machine.

I haven't tested it but I suspect all calls to localStorage fail too.

Kinlan
  • 16,315
  • 5
  • 56
  • 88
  • 1
    [localStorage works, but the values are discarded when the private session ends](http://htmlui.com/blog/2011-08-23-5-obscure-facts-about-html5-localstorage.html). So, that would not be an effective detection method for the current session. – Brock Adams Apr 19 '13 at 23:49
  • 2
    localStorage behaves like sessionStorage when chrome is in InCognito Mode. – PG1 Jun 15 '14 at 10:27
2

Nowadays it's quite easy to do this from a content script. Just use

if(chrome.extension.inIncognitoContext) {
    //you're incognito
} else {
    //you're not
}
jberculo
  • 1,084
  • 9
  • 27