2017-02-10 3 views
0

Certaines fonctionnalités de mon site Web ne fonctionnent pas sur Opera Mini, mais elles fonctionnent sur Opera. Y a-t-il un moyen de faire la différence entre ces deux navigateurs en JavaScript, afin que je puisse empêcher les gens d'accéder à certaines pages de mon site?Comment faire la différence entre Opera et Opera Mini en JavaScript

J'ai essayé window.navigator.userAgent.indexOf ('Opera Mini /') mais cela fonctionne également pour Opera ... Object.prototype.toString.call (window.operamini) === "[object OperaMini] » ne fonctionne pas du tout

+0

'var isOperaMini = (navigator.userAgent.indexOf ('Opera Mini')> -1);' retourne-t-il true pour Opera? Comment venir? – imudin07

+0

que les morceaux de code retourne faux pour les deux ... window.navigator.userAgent.indexOf ('Opera Mini /') renvoie vrai pour les deux – MickeyKSP

+0

bien sûr, il renvoie vrai, vous devez comparer avec -1 – imudin07

Répondre

0

Opera Mini utiliser 3 modes pour les principales plateformes (iOS, Android):

  1. mode par défaut - sans compression
  2. mode d'économie de haute - compresser le contenu uniquement (images , vidéo et etc.)
  3. Mode extrême - compres sion en utilisant OBLM

Seul le mode extrême est réel Opera Mini, dans d'autres cas Opera Mini utilise le moteur de navigateur par défaut, mais avec des lettres supplémentaires OPR/ dans la chaîne de l'agent utilisateur.

Vous avez juste besoin de vérifier window.operamini pour le mode extrême et OPR/ dans la chaîne de l'agent utilisateur pour les autres modes.

const isOperaMini = navigator.userAgent.indexOf('OPR/') !== -1; 
const isOperaMiniExtreme = isOperaMini && !!window.operamini; 

C'est tout. C'est la seule façon.