有没有办法使用<;![如果!(即8)]>;在PHP中?
对不起,这个标题让人困惑,我不知道怎样才能更好地描述它 无论如何,这是我目前在Cufon网站上使用的“问题”。这很有效。然而,使用InternetExplorer8时,速度会变得非常慢。因此,我决定使用:有没有办法使用<;![如果!(即8)]>;在PHP中?,php,javascript,css,Php,Javascript,Css,对不起,这个标题让人困惑,我不知道怎样才能更好地描述它 无论如何,这是我目前在Cufon网站上使用的“问题”。这很有效。然而,使用InternetExplorer8时,速度会变得非常慢。因此,我决定使用: <![if !(IE 8)]> <script type="text/javascript" src="js/myriad-pro.cufonfonts.js"></script> <script type="text/javascript">C
<![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.replace('.example1')('.example2')('.example3')('.example4')('.example5');
这很管用,但并非适用于所有情况。脚本的某些部分(在脚本本身中调用Cufon)不起作用,Cufon仍将显示在IE8中(所有负面结果)
包括的几个脚本/部件中包含以下代码:
<?php
echo "<script language=\"javascript\" type=\"text/javascript\">";
echo "$(document).ready(function() { Cufon.replace('.orderpart1') ('.orderpart2') ('.orderpart3'); });";
echo "</script>";
?>
基本上,您可以通过过滤来宾的用户代理来实现这一点。您可以从服务器变量中获取此信息
$ua = $_SERVER['HTTP_USER_AGENT'];
用户代理包含打开页面的来宾的所有必要信息。到目前为止,我所知道的这项技术的最简单用法是:
if (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT'])) {
//do something
}
是的,您可以使用
但我们知道,这可以由用户更改
只需打印条件注释即可
<?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]>";
?>
在PHP中,可以使用检测浏览器及其版本
$browser = get_browser(null, true);
这将返回一个包含浏览器信息的数组
请注意,这将需要browscap设置。您希望PHP检测用户代理,并仅在版本不是IE8时发送Cufon相关脚本。尝试现有的PHP浏览器版本检测脚本-滚动您自己的脚本保证不会捕捉到一个异常…服务器端不是浏览器。只需回显所有资源并使用以查找IE并运行它。+1 for。我不知道。get_browser()唯一的问题是,如果你想广泛使用它,你必须维护一个最新的ini文件。谢谢。。。但这行得通吗?我也想到了,但我怀疑它会起作用吗?我可能错了,但这不应该破坏你的状态。PHP在服务器端执行,Apache或您使用的任何Web服务器将HTML结果提供给客户端。如果将它直接放在HTML页面中时它可以工作,那么当PHP将它回送到页面中时它应该可以工作。我刚刚添加了最后一个我忘了,不知道你是不是在尝试之前把它放回去了。。。你是对的。。。显然我把你的答案和别人的答案弄混了。我的错。正如你所说,它现在工作正常。我甚至用IE8(在IETester中)测试了它。但是既然你编辑了你的代码,我现在应该使用哪一个?你给我的第一个,还是第二个?谢谢你,伙计!我推荐第一个,它使用广泛使用的条件注释,而我在回答中提到的$浏览器
已被弃用。一个快速(也是最后一个)问题。是否不仅可以将此规则用于IE8,还可以用于更低版本?那么对于IE8、IE7、IE6和IE5呢?
$using_ie8 = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8.') !== FALSE);
<?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]>";
?>
$browser = get_browser(null, true);