带有AND和OR的Javascript if语句

时间:2013-05-05 11:06:55

标签: javascript if-statement

我正在使用jQuery的浏览器插件来检索浏览器名称和版本。无论如何,如果用户使用某个浏览器和/或某个版本,我正试图显示一条消息。这是我正在使用的:

if (($.browser.name == "msie" && $.browser.version <= "8.0") || $.browser.name == "safari" || $.browser.name == "opera") {
    // Do something
}

一切正常,除了IE9中的错误显示,它不应该。我希望它只显示8.0或更低版本。这句话怎么了?

提前致谢。

编辑:我现在正在使用$ .browser.versionNumber,但它仍无效。像这样:

if (($.browser.name == "msie" && $.browser.versionNumber <= "8") || $.browser.name == "safari" || $.browser.name == "opera") {
    // Do something
}

$。browser.versionNumber检索一个数字。在这种情况下,如果我使用IE9,它将发送“9”。

4 个答案:

答案 0 :(得分:3)

请注意,比较字符串会产生与比较数字不同的结果

  $.browser.version <= "8.0"

例如

  "10.0" < "8.0"

也许您只对主要版本号感兴趣,然后您可以使用parseInt来提取它。

答案 1 :(得分:3)

正如其他人已经说过的那样,字符串上没有定义<=运算符。

字符串上有一个<=运算符,但它不是您需要的运算符。例如:

alert('2' <= '10'); // this yields false.

解决方案是使用$.browser.versionNumber

  

browser.versionNumber:浏览器的版本(注意,作为整数)。

像这样:

if (($.browser.name == "msie" && $.browser.versionNumber <= 8) || $.browser.name == "safari" || $.browser.name == "opera") {
    // Do something
}

答案 2 :(得分:0)

IE9是否在您的网站上以兼容性和/或怪异模式运行?

这可能会误导插件认为您运行的是旧版本。

答案 3 :(得分:-1)

你不应该在字符串上使用“&lt; =”:

if (($.browser.name == "msie" && $.browser.version <= 8) || $.browser.name == "safari" || $.browser.name == "opera") {
// Do something
}