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 Update を実行していない別のマシンで正常に動作します。

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 に答える