有没有办法在PHP中使用<! - [if!(IE 8)] - >?

时间:2012-05-15 09:09:48

标签: php javascript css

对于令人困惑的标题感到抱歉,我不知道如何更好地描述它。

无论如何,这是我目前用于我的网站Cufon的'问题'。哪个效果很好。但是,对于Internet Explorer 8,它变得非常慢。因此我决定使用:

<![if !(IE 8)]>
<script type="text/javascript" src="js/myriad-pro.cufonfonts.js"></script>
<script type="text/javascript">Cufon.replace('.example1') ('.example2') ('.example3') ('.example4') ('.example5');
</script>
<![endif]>

这很好用,但不适用于所有事情。脚本的某些部分,在脚本本身调用Cufon,它不起作用,Cufon仍然会在IE8中显示(带有所有负面结果)。

包含的几个脚本/部件中包含以下代码:

<?php
echo "<script language=\"javascript\" type=\"text/javascript\">";
echo "$(document).ready(function() { Cufon.replace('.orderpart1') ('.orderpart2') ('.orderpart3'); });";
echo "</script>";
?>

现在是否可以在PHP脚本中创建相同的语句?因此,如果它是IE8以外的任何浏览器,它将加载Cufon,但如果它是IE8,它将不会加载Cufon?

希望有人理解我在这里的意思,因为有点难以向我解释...... :(

5 个答案:

答案 0 :(得分:5)

<?php
echo "<![if !(IE 8)]>";
echo "<script language=\"javascript\" type=\"text/javascript\">";
echo "$(document).ready(function() { Cufon.replace('.orderpart1') ('.orderpart2') ('.orderpart3'); });";
echo "</script>";
echo "<![endif]>";
?>
是吗?或者我误解了你的要求?

修改 另一种方式,因为我看到你正在使用jQuery,可能正在使用jQuery browser detection

<?php
echo "<script language=\"javascript\" type=\"text/javascript\">";
echo "if ( $.browser.msie && $.browser.version <= 8 ) {";
echo "$(document).ready(function() { Cufon.replace('.orderpart1') ('.orderpart2') ('.orderpart3'); });";
echo "}";
echo "</script>";
?>

请注意,此功能已弃用:

  

此属性可立即使用。因此,使用它来确定是否调用$(document).ready()是安全的。 $ .browser属性在jQuery 1.3中已弃用,其功能可能会在未来的jQuery版本中移动到团队支持的插件中。

如果您确切知道需要哪种功能且未在IE8中实现,我建议使用$.support,这是用于功能检测而非浏览器检测。

答案 1 :(得分:2)

是的,您可以使用HTTP_USER_AGENT

$using_ie8 = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8.') !== FALSE);

但我们知道这可以由用户更改。

Here is a list of all User Agents for IE

答案 2 :(得分:2)

在PHP中,您可以使用get_browser()来检测浏览器及其版本。

$browser = get_browser(null, true);

这应该返回一个包含浏览器信息的数组。

请注意,这需要设置browscap。

答案 3 :(得分:0)

基本上,您可以通过过滤访客的USER AGENT [docs] 来完成此操作。您可以从服务器变量中获取此信息。

$ua = $_SERVER['HTTP_USER_AGENT'];

USER代理包含正在打开该页面的访客的所有必要信息。到目前为止,我所知道的这种技术最简单的用法是:

if (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT'])) {
    //do something
}

答案 4 :(得分:0)

也可以打印条件评论;

<?php
echo "<![if !(IE 8)]>";
echo "<script language=\"javascript\" type=\"text/javascript\">";
echo "$(document).ready(function() { Cufon.replace('.orderpart1') ('.orderpart2') ('.orderpart3'); });";
echo "</script>";
echo "<![endif]>";
?>