0

我正在使用 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

4 回答 4

3

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

  $.browser.version <= "8.0"

例如

  "10.0" < "8.0"

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

于 2013-05-05T11:10:26.950 回答
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
}
于 2013-05-05T11:11:08.953 回答
0

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

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

于 2013-05-05T11:22:12.583 回答
-1

您不应该在字符串上使用“<=”:

if (($.browser.name == "msie" && $.browser.version <= 8) || $.browser.name == "safari" || $.browser.name == "opera") {
// Do something
}
于 2013-05-05T11:10:46.887 回答