1

我在我的网站上包含了一些 jQuery 脚本。该脚本不适用于低于 IE7 的任何内容。现在我想做以下事情:

<!--[if !(lt IE 7]>
    <?php include 'script.html'; ?>
<![endif]-->

如果浏览器“不低于 IE7”,它应该只加载脚本。但它不起作用。

有没有办法在使用基于 PHP 的浏览器识别的情况下解决这个问题?

4

6 回答 6

5

是的,将浏览器识别构建到您的 jQuery/javascript 中。在 javascript 中,测试您需要的功能对象,如果不存在,则使用代码来处理它。

于 2011-12-02T13:28:22.910 回答
0

可能是开头(没有结尾)?

于 2011-12-02T13:29:19.693 回答
0

帮助第一部分:它不起作用,因为您不需要(before lte,也不需要!. 采用

<!--[if gte IE 7]>
  <?php include 'script.html'; ?>
<![endif]-->

延伸阅读:微软关于 IE 条件注释的页面

于 2011-12-02T13:29:19.693 回答
0

另一种选择是使用众所周知的 ie7.js 脚本,它使旧 IE 版本更加“标准”兼容,这肯定会使您的 jQuery 脚本工作。

你可以在这里找到

于 2011-12-02T13:30:32.907 回答
0

您不应该使用浏览器检测。相反,请使用功能检测来测试您的浏览器是否能够执行您想做的事情

于 2011-12-02T13:34:13.393 回答
0

在 php 中,您将执行以下操作之一

$browser = get_browser(null, true);
if($browser['browser'] == 'MSIE' && $browser['version'] >= 7) { /*CODE*/

或者

$u_agent = $_SERVER['HTTP_USER_AGENT']; 
$bname = 'Unknown';
$version= "";

if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) 
{ 
    $bname = 'Internet Explorer'; 
} 

// finally get the correct version number
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
    // we have no matching number just continue
}

IE 条件语句仅在页面发送到浏览器后才起作用,因此 PHP 包含文件将不起作用,要包含 JS 脚本文件,您将使用

<!--[if !(lt IE 7]>
<script src='script.js' type='text/javascript'></script>
<![endif]-->

对于 javascript 浏览器检测,您将使用:

if(BrowserDetect.browser == "MSIE" && BrowserDetect.version >= '7') {
   /* CODE */
}
于 2011-12-02T13:36:18.220 回答