【发布时间】:2014-06-04 17:37:54
【问题描述】:
我打算在我的 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
}
?>
这应该工作两次。一,$_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 )
好的...即使那不起作用...“怪癖模式”条件 cmets 不会作为后备只显示图像并链接到 IE8 及以下版本吗? 我在这里错过了什么?
编辑
好的,所以我按照指示做了。我已删除 PHP 代码,并将 .ieNotice 类与 display: none 属性放在一起。现在,在此处包含的样式表上:
<!--[if lte IE 8]>
<link rel="stylesheet" type="text/css" href="/skin/frontend/default/hellowired/css/styles-ie-lte8.css" media="all" />
<![endif]-->
我添加了以下行:
.ieNotice { display: block !important;}
我已经在 Firefox 和 Chrome 上正常看到了这项工作,但它仍然显示我为 IE 9、10 和 11 创建的横幅。
【问题讨论】:
-
为什么还要检查 UA 字符串?条件 cmets 为您进行过滤 - 您不必担心任何其他浏览器或更新版本的 IE 会看到它们的内容。这就是条件 cmets 的全部意义所在。
-
这是在
head还是body? -
它在身体里,现在在头脑里。我已经删除了 UA 字符串检查。
标签: php html regex internet-explorer-8 conditional-comments