有条件的IE评论在Joomla中不起作用

时间:2014-10-08 07:26:19

标签: css internet-explorer joomla

我们有一个网站http://www.globalforcestn.com/。除了我放在模板中的条件IE注释外,一切都很好。因此,在IE(特别是菜单)中无法正确呈现网站。它向左移动。这是我们的代码:

 <!--[if lt IE 11]>
<link href="/modules/mod_maximenuck/themes/css3megamenu/css/ie7.css" rel="stylesheet" type="text/css" />
<![endif]-->

但它不会尊重IE条件。当浏览器设置为兼容模式时,它将呈现它。但是,在兼容模式下,该网站看起来更加糟糕。

希望得到你的回复。谢谢!

3 个答案:

答案 0 :(得分:3)

IE停止支持IE10以后的条件评论。因此条件注释只适用于IE9,IE8,IE7,如果你仍然支持它,IE6(IE5及以下版本,但支持IE5?)。

因此,如果你正在瞄准IE9,那么简单的[if IE]将会这样做,因为它将被IE10及更高版本忽略。如果你想让上述内容在IE10中运行,那你就不幸了。

请参阅Microsoft的声明:http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx

答案 1 :(得分:0)

在Internet Explorer 10标准中删除了对条件注释的支持,这意味着IE10及更高版本的条件注释被视为常规注释(被浏览器忽略)

来源:http://msdn.microsoft.com/en-us/library/ie/hh801214(v=vs.85).aspx

答案 2 :(得分:0)

目标IE10 +的唯一方法是使用浏览器检测代码。您可以使用php函数获取$browser = get_browser();之类的浏览器详细信息,然后使用strpos搜索浏览器代理字符串。但既然你的问题提到了joomla。在joomla中实现了一个php函数,它很容易使用。如果有人想尝试,我会分享。

jimport('joomla.environment.browser');     
    $browser = &JBrowser::getInstance();
    $browserType = $browser->getBrowser();
    $browserVersion = $browser->getMajor();
    $client = new JApplicationWebClient();

然后你可以使用if else语句并进行比较。您可以使用此link来检查IE浏览器用户代理。

例如,对于IE 10和11,我将使用以下

        if(($browserType == 'mozilla') && ($client->engine == JApplicationWebClient::TRIDENT))  //IE11

        if(($browserType == 'msie') && ($client->engine == JApplicationWebClient::TRIDENT)) //IE10

很多浏览器都会使用mozilla,但很少有人会使用三叉戟而非流行的浏览器除了IE之外。注意:你需要检查浏览器类型和IE 10一样,我认为它是msie。但是,您需要获取针对特定IE的修订,在这种情况下可以是rv:11.0,您可以在测试页上检查它是否只使用print_r($agentString)

为此,您需要使用$agentString = $browser->getAgentString();

然后使用strpos执行字符串搜索 因此对于IE 10&amp; 11:      $ ieagentversion10 = strpos($ agentString,'10');     $ ieagentversion11 = strpos($ agentString,'11'); 然后你可以简单地将它添加到If语句:

&& ($ieagentversion10 == true)
&& ($ieagentversion11 == true)