1

私のヘッダーには次のものがあります:

<!--[if lte IE 8]>
<meta http-equiv="refresh" content="0; url=/ie-sucks" />
<script type="text/javascript">
    /* <![CDATA[ */
    window.top.location = '/ie-sucks';
    /* ]]> */
</script>

上記のコードは、< IE 8 を使用しているユーザーを別の場所に簡単にリダイレクトします。ie-sucks

これは正常に機能していますが、ユーザーをチェックしていたところ、/ie-sucks にリダイレクトした後、Mozilla Firefox を開き、再び mysite.com/ie-sucks をアドレス バーにコピー ペーストします。そのページに...

私はこれがばかげていることを知っていますが、IE8以下でない場合、または他のブラウザを使用している場合は、そのページからメインサイトにリダイレクトする必要があります...

これでIEユーザーを修正しました:

<!--[if !lte IE 8]>

しかし、このコードは Fiefox ユーザーには適用されません...

非 IE ユーザーを検出してリダイレクトするにはどうすればよいですか?

少し早いですがお礼を

4

2 に答える 2

1

あなたはあなたがやろうとしていることをしている結び目で自分自身を縛るつもりです。

元の条件文のようにユーザーがIE8以下を使用している場合は、ページの上部にメッセージを表示するだけではどうでしょうか。

メッセージは、ブラウザをアップグレードするか、Chrome、Firefoxなどをダウンロードすることを提案するだけで、メッセージを閉じたり非表示にしたりすることもできます。

<!--[if lte IE 8]>
    .my-message {
        display: block;
    }
<![endif]-->
于 2013-02-11T12:06:45.743 に答える
1

<!--[if ... ]>IEによってのみ処理されます。これがトリックです。

Firefoxまたは他のブラウザをリダイレクトするには、ユーザーエージェントで区切る方がよいでしょう(ただし、ユーザーエージェントの変更は非常に簡単であることに注意してください)。これは、たとえばPHPを使用して実行できます。

<?php

$useragent = $_SERVER['HTTP_USER_AGENT']; //get the user agent

if(!strpos($useragent, "MSIE")) {
  // user agents from IE should always look like this and include 'MSIE':
  // Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64)
  header("Location: http://example.com/");
}

?>

次のようにユーザーエージェントを処理するJavaScriptの方法もあるかもしれません。

if(navigator.userAgent.indexOf('MSIE') == -1) { ...

ただし、繰り返しになりますが、文字列内に「MSIE」を含むユーザーエージェントや、InternetExplorerを使用するユーザーが「Firefox」などに変更する可能性があることに注意してください。したがって、これはフェイルセーフソリューションではありませんが、それがあなたの質問に対する答えになると思います。

PS:とにかく誰かがブラウザに条件付きでIEからURLをコピーして、「ここにIEが必要ありません」というメッセージを表示する必要があるのはなぜですか?これを行う人は誰でも知っているはずです、彼は実際にはIEを使用していないので、これは混乱しないはずです。あなたは多くのことを考えています。他の人がするすべての行動を理解することはできません;)

于 2013-02-11T12:06:54.977 に答える