检测Firefox 3.5、Firefox 3.0或更低版本

6

我必须承认,在处理CSS时,以前我从来不需要考虑Firefox的版本问题,但出现了一个问题:与FF2和FF3.0相比,FF 3.5不能正确地定位我的某些元素。

现在我需要检测它是否是FF 3.5。

以下是我目前在处理跨浏览器CSS时所做的:

<!-- MAIN STYLESHEET -->
<link rel=stylesheet href="./inc/style.css" type="text/css">

<!-- IE STYLE SHEET -->
<!--[if IE]> <style type="text/css">@import "./inc/style.ie.css";</style> 
<![endif]-->

现在我需要添加第三个选项,但是如何添加呢?有没有什么方法可以做到这一点,或者我必须实现某种JavaScript解决方案吗?
谢谢 -

1
你用的是哪个CSS代码?我总是尝试在创建大量特定于浏览器的样式表之前解决问题。实际上,我从来没有使用过特定于浏览器的样式表。 - Guffa
1
我很期待Firefox 3.5,但尽管我没有遇到你的问题,我确实遇到了一些问题,其中3.5显示的图像(背景等)与所有其他浏览器(包括IE6!)显示的颜色不同。这让我非常失望。 - jeroen
6个回答

9

我的(短期)解决方案是使用jQuery,如下:

$(document).ready ( 
  function() {
    if ( $.browser.mozilla == true && $.browser.version == '1.9.1' ) {
      // modify css here
    }
  }
);

请注意,$.browser.version并不像你想的那样是3.5(而是返回渲染引擎版本)。此外,$.browser似乎没有一个firefox值,它只为所有基于mozilla的浏览器返回mozilla。
假设这可以满足我的短期需求。谢谢 -

3

使用浏览器标签无法实现此操作。您将需要使用浏览器嗅探(使用JavaScript检测浏览器),以加载正确的样式表。

如果您正在使用Mootools或jQuery等JavaScript库,则有一些函数可用于执行此操作。

另一种解决方案是在服务器端检测,然后发送替代样式表。


我喜欢在服务器上使用PHP进行检测的想法,你能提供一些建议吗? - OneNerd
1
检查发送的标头中的User-Agent字符串。 我100%确定有一种方法可以轻松过滤出某人正在使用的浏览器(无论是通过猜测还是使用库)。 然后,如果UA字符串与FF3.5相同,则使用不同的css文件或在Javascript文件中添加所需的表达式。希望这有所帮助。 - Henrik Hansen

3

我首先会尝试在没有针对特定浏览器的CSS修复的情况下解决问题。通常只需要多加思考就可以想出跨浏览器的解决方案。请在此处发布您的CSS问题,然后我们可以尝试修复它 :)

但是为了直接回答您的问题,不幸的是,您将不得不使用Javascript。但是幸运的是,有一个非常简单的解决方案。

加载这个JavaScript文件,然后您就可以使用这些属性:

  • BrowserDetect.browser
  • BrowserDetect.version
  • BrowserDetect.OS

然后你可以做像这样的事情:

if (BrowserDetect.browser == 'Firefox' && BrowserDetect.version == '3.5')
{
  // Load CSS file
}

http://www.quirksmode.org/js/detect.html


1

看起来有一个 CSS 的解决方案,试试这个

    @-moz-document url-prefix() {
  .selector {
     color:lime;
  }
}

0

Firefox 没有条件注释。您可能需要检查用户代理并在结果中包含样式表。


0

你可以使用JavaScript检查userAgent


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接