2013-02-23 45 views
2

这个问题很简单,但我想问一问。如果不是Opera Mini

此代码告诉我们,用户的浏览器是一个著名的Opera Mini的

var isOperaMini = (navigator.userAgent.indexOf('Opera Mini') > -1); 

这样我就可以这样使用它:

if (navigator.userAgent.indexOf('Opera Mini') > -1) 
    alert('hey! your browser is buggy'); 

这是if Opera Mini, then条件。

如何制作右边短条件为?

我不知道该如何玩-1整数。

+0

其实,这代码只告诉你,在用户代理头中传递包含'歌剧Mini'。 – Oded 2013-02-23 20:53:04

+0

http://en.wikipedia.org/wiki/%3F:#JavaScript – RGdev 2013-02-23 20:54:22

+1

哇,_please_不用三元运算符实现布尔否定。 – Eevee 2013-02-23 20:59:55

回答

3

你可以简单地将其更改为

if (navigator.userAgent.indexOf('Opera Mini') == -1) 

,将返回true,如果它不能在用户代理字符串,找到“Opera Mini的”

+0

它会在Opera Mini中返回'true' ** only **吗? – Jasper 2013-02-23 20:55:23

+0

@Steve - 如果用户代理不包含“Opera Mini”,它将返回true。看起来你真的需要阅读['indexOf'](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/indexOf)。 – Oded 2013-02-23 20:59:19

0

使用~运营商的另一个选项(可能的可读性):

if (~navigator.userAgent.indexOf('Opera Mini')) { 
    // opera mini 
} 

if (!~navigator.userAgent.indexOf('Opera Mini')) { 
    // not opera mini 
} 

但是它可能更好地为您与-1比较,直到您熟悉的语法。

+0

有人不同意?注释? – dfsq 2013-03-21 10:40:31

3

Opera doc

检测的Opera Mini: 2的方法:您可以:

  1. 检查用户代理字符串

  2. 检查的存在operamini object

即如果没有的Opera Mini是:

if (!window.operamini){}

短,方便,可靠。与可欺骗的用户代理不同。