1

我遇到了 IE7 兼容模式和 HTML5 的奇怪问题。

症状:直接进入我的主页,使用PHP可以检测到是IE7。点击表单提交按钮并单击返回按钮后,即使仍处于兼容模式,它也不再检测为 IE7。必须刷新或重新加载才能再次检测为 IE7。

我能做些什么来使它更健壮?请不要说使用get_browser 和browscap。我不想继续维护那个browscap.ini。

在html头中:

<?php 
    /**
    *   IE 7 has trouble with jscrollpane, so disable for all IE except for 9 which works just fine.
    */ 
    $getBrowser = $_SERVER['HTTP_USER_AGENT']; 
    if( (!stristr($getBrowser,'MSIE')) || stristr($getBrowser,'MSIE 9')):
?>
<script src="jquery/jquery.mousewheel.js"></script>
<link  rel="stylesheet" href="styles/jquery.jscrollpane.css" />
<script src="jquery/jquery.jscrollpane.min.js"></script>
<script  src="jquery/js.js"></script>
<?php endif; ?>

更新:

$getBrowser = $_SERVER['HTTP_USER_AGENT']; 
        if( stristr($getBrowser,'MSIE') === false)

将 js.js 行重新定位到:

<!--[if IE 9 ]>
    <script  src="jquery/js.js"></script>
<![endif]-->

点击返回按钮时仍然做同样的事情。

编辑:伙计……我想我遇到了一些严重的机器问题。窗户更新后,带窗户的盒子肯定被搞砸了。对不起这些疯狂的东西。在尚未运行 Windows 更新的另一台机器上工作正常。

4

2 回答 2

1

我没有 IE9,所以我无法尝试,但你不能做这样的事情并将其放在<head>

<!--[if IE 9]>
     // your includes here
<![endif]-->

不确定是否仍然看到script源中包含的标签对您是否重要,但至少它不会执行它们,除非检查得到满足。

于 2011-05-18T06:49:52.610 回答
0

正如@tradyblix 所说,你可以做这个客户端。它们被称为条件注释

如果您必须在 PHP 中执行此操作,我会使用 strpos()。

$ua = $_SERVER['HTTP_USER_AGENT'];
if (stripos($ua, 'MSIE') === false || stripos($ua, 'MSIE 9') !== false)
于 2011-05-18T06:57:32.543 回答