2010-10-18 30 views
6

J'écris une extension Safari et je veux qu'elle se comporte différemment lorsque l'utilisateur passe en mode Private Browsing (je veux respecter ce mode privé). Je n'ai trouvé aucune mention de cela dans les documents d'Apple.Comment une extension Safari peut-elle être identifiée si le mode de navigation privée est activé?

Je suis au courant de la discussion sur ce sujet:

Detecting if a browser is using Private Browsing mode

qui suggère d'utiliser une astuce js-CSS (navigateur agnostique) pour détecter mode navigation privée, mais on espère qu'il ya un certain crochet intégré à Safari que je pourrais utiliser pour mon extension.

Des idées?

Répondre

0

Tous les modes privés ignorent l'état actuel du cookiejar utilisé par le navigateur. Utilisez quelque chose comme un evercookie pour garder une trace d'un navigateur spécifique et comment il gère ses différents identifiants de session. Par exemple, si vous avez un cookie http qui expire dans 60 ans et que cette valeur de cookie n'est pas présente dans une requête adressée à votre serveur, alors vous savez que les valeurs du cookie ont été vidées ou qu'elles sont en mode privé. Cela nécessitera un peu plus d'expérimentation de votre part, mais cette direction sera une méthode générale pour détecter l'utilisation du mode privé dans les navigateurs.

1

Vous pouvez interroger le booléen safari.application.privateBrowsing.enabled pour vérifier si la navigation privée est activée ou non.

Vous pouvez également associer des écouteurs d'événement pour déclencher le code personnalisé lorsque la navigation privée est activée ou désactivée.

safari.application.privateBrowsing.addEventListener('activate', function(e) { 
    console.log("Private browsing activated"); 
}); 

safari.application.privateBrowsing.addEventListener('deactivate', function(e) { 
    console.log("Private browsing deactivated"); 
}); 

Source: Apple Docs