如果浏览器是IE6/IE7,我需要显示不同的HTML。我知道,如果我们只是讨论样式信息,那么条件注释可以很好地工作,但在这种情况下,它是实际的标记。
我会有一个无序的图像列表,这将是png-24。它们将具有圆角(因此需要png-24提供的透明度),并且将在CSS(3)中具有圆角边框样式。随着IE6不能识别png-24的,我想有一个图像的替代列表,这是jpg的,其中已经有边界包括在图像中。这将使IE6/IE7满意,同时兼容标准的浏览器将获得正确的版本。
(我之所以这样做,是因为网站可能会增长到许多图像,并且需要轻松地进行主题设置。如果我在代码中生成边框,只需对边框颜色进行简单的更改,它就会改变整个站点。我意识到IE仍然必须是手动的,但如果他们真的希望IE6支持它,我可以为此创建一个单独的费用。)
所以我的问题是,使用PHP做这件事最好的方法是什么,有什么缺点吗?
发布于 2009-09-17 09:36:53
你可以在PHP中检测到它并发送不同的HTML:
$using_ie6 = ((strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== FALSE) || (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6,0') !== FALSE));
if ($using_ie6) {
...
}
else {
...
}这种方法的缺点是Opera有时会在它的用户代理报头中发送MSIE 6,这也可能与IE mobile相匹配。
将不同的内容发送到不同的浏览器通常是一件很好的事情,尽量避免--你最终会得到大量重复的代码,以及由此带来的所有固有的邪恶。
发布于 2009-09-17 09:54:05
使用条件注释-它们可以很好地处理标记,而不仅仅是样式信息:
<!--[if lte IE 6]>
<p>Old school</p>
<![endif]-->请参阅MSDN:About Conditional Comments
发布于 2009-09-17 09:37:23
$is_ie6 = (isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6') !== false));https://stackoverflow.com/questions/1437723
复制相似问题