为什么IE7兼容性后退按钮php无法检测为IE7?

时间:2011-05-18 06:34:54

标签: php html5 ie-compatibility-mode

我在使用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更新后,必须拧紧带有窗口的盒子。对不起这个疯狂的东西。在尚未运行Windows更新的另一台计算机上正常工作。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

正如@tradyblix所说,你可以做这个客户端。他们被称为conditional comments

如果你必须在PHP中这样做,我会使用strpos()。

$ua = $_SERVER['HTTP_USER_AGENT'];
if (stripos($ua, 'MSIE') === false || stripos($ua, 'MSIE 9') !== false)