我想在我的JSF 2应用程序中做的是根据浏览器版本设置正确的html样式,这里是示例代码:
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)
如何在JSF 2中做到这一点?什么是最好/最简单的方法?
我在Omnifaces(o:conditionalComment)中发现了一些有趣的东西,但它只允许有条件地加载整个css,这对我来说是无用的......
我的目标是从我的文档中删除IE条件注释<head>,但我认识到我仍然需要使用ie6,7,8特定的样式表(如果我错了,请纠正我).
例如,HTML5Boilerplate 3.0使用这些IE条件:
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"><![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)
所以相反,我想我想使用JavaScript将类添加到我的html标签中,从而得到这个(如图所示):
<html lang="en" class="ie6 ie7 ie8">
所以我的问题是:使用JavaScript将CSS类添加到我的文档的html元素而不是使用IE条件注释有什么缺点(后果)?
我现在能想到的一个效果:
编辑:我将继续并承认添加这些类的最可靠的方法是(遗憾地)使用IE条件注释.谢谢大家对话.
javascript jquery internet-explorer conditional-comments modernizr
我有1个div,我想对它应用渐变和背景图像(是的,在同一个元素上).我知道只有你所定位的浏览器不是IE才有可能.考虑到这一点,我想到应用纯色代替渐变,其上面只有IE图像.
这是我的代码:
background: url(../images/newsletter.png), -moz-linear-gradient(top, rgb(10,10,01) , rgb(5,5,5));
background: url(../images/newsletter.png), -webkit-gradient(linear, left top, left bottom, from(#0a0a0a), to(#05050f));
background-repeat: no-repeat, repeat;
<!--[if IE]>
background: #000 url(../images/newsletter.png) center left no-repeat;
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
问题是在FF/Chrome声明之前或之后忽略条件.(我已经测试过了,还有[如果错误]等)任何想法?
我打算将一些代码放入我的CMS标题中,该标题将提醒任何使用IE 8及以下版本的用户,建议升级他们的浏览器.
在PHP中,我有以下代码,它显示所有版本的IE.
<?php
if(preg_match('/(?i)msie [1-8]/',$_SERVER['HTTP_USER_AGENT'])) {
// if IE<=8
?>
<!--[if lte IE 8]>
<div class="ieNotice">
<a href="http://windows.microsoft.com/en-us/internet-explorer/" target="_blank">
<img src="/skin/frontend/default/hellowired/images/ieUpgrade.jpg">
</a>
</div>
<style>
.ieNotice {
background-color: #eee;
padding: 10px;
}
</style>
<![endif]-->
<?php
}
?>
Run Code Online (Sandbox Code Playgroud)
这应该是两倍的工作.一,$_SERVER['HTTP_USER_AGENT'])应该能够告诉浏览器分开.但是,我注意到当我运行跨浏览器测试时,IE 8和UP将返回相同的结果$_SERVER['HTTP_USER_AGENT']),即:
Mozilla/4.0(兼容; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
好的......即使这不起作用......"Quirks模式"条件评论不会作为后备只显示图像并链接到IE8及以下? 我在这里错过了什么?
好的,所以我按照指示完成了.我删除了PHP代码,并将.ieNotice该类放在display: none属性中.现在,在这里包含的样式表上:
<!--[if lte IE 8]>
<link …Run Code Online (Sandbox Code Playgroud) 我尝试了几种条件格式,如在不同的网站中看到的,但似乎无法使其工作.浏览器版本是IE 11.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title></title>
<link href="CSS/reset.css" rel="stylesheet" />
<link href="css/bootstrap.min.css" rel="stylesheet" />
<link href="CSS/font-awesome.css" rel="stylesheet" />
<!--[if !IE]><!--><link rel="stylesheet" type="text/css" href="CSS/login.css" /><!--<![endif]-->
<!--[if IE]><!--><link rel="stylesheet" type="text/css" href="CSS/loginIE.css" /><!--<![endif]-->
Run Code Online (Sandbox Code Playgroud)
我已经改变了格式.删除Bootstrap和Fontawesome CSS但仍然无法正常工作.我甚至更改/删除了doctype和meta值,但没有任何效果.请帮忙.
html css internet-explorer conditional-comments internet-explorer-11