3

HTML で次の手法を使用して、Web ブラウザーが IE であるかどうかを判断する良い方法がありました。

<!--[if IE]>
Non-IE browsers ignore this
<![endif]-->

また

<!--[if !IE]-->
IE ignores this
<!--[endif]-->

しかし、これはIE 10では機能しなくなりました。

(HTML または JavaScript を使用して) 他の Web ブラウザーから IE に伝える代わりに何を使用すればよいでしょうか?

PS。IE 以外の Web ブラウザから IE の任意のバージョンを認識できるようにする必要があります。

4

5 に答える 5

9

あなたのすべての洞察に感謝しますが、私の実際の質問には答えません。繰り返しますが、私は特徴検出について尋ねているわけではありません。私が知る必要があるのは、Web ブラウザーが IE かどうかだけです。以下は JavaScript を使用しており、現在のすべてのバージョンの IE (IE10 を含む) で動作するようです。

<![if IE]>
<script type='text/javascript'>
if(/*@cc_on!@*/false)
var bIsIE = 1;
</script>
<![endif]>

IE かどうかを確認するには、JavaScript から次のようにします。

if (typeof (bIsIE) != 'undefined')
{
    //The web browser is IE
}
else
{
    //The web browser is not IE
}

明らかに、上記のコードは、Web ブラウザーで JavaScript が有効になっていることを前提としています。しかし、私の場合、ブラウザの検出は、スクリプトが有効になっている場合にのみ関係があります。

于 2013-04-02T06:52:08.430 に答える
5

Chrome、Firefox、および Opera のすべてのバージョンが以前のバージョンと異なるように、Internet Explorer のすべてのバージョンは他のバージョンとは異なります。Web サイトを開発するときは、「Microsoft」、「Google」、「Mozilla」などのベンダーをターゲットにするのではなく、機能をターゲットにします。

::after を使用したいのですが、このブラウザーは Microsoft ブラウザーですか?」と尋ねるのではなく、「このブラウザーは :: プレフィックスの疑似要素をサポートしていますか?」と尋ねる必要があります。常に完全に的を射ています。ブラウザがそのベンダーによって何ができるかを推測するのではなく、実際に何ができるかによってブラウザができることを判断します。

これはあなたが探していた答えではないかもしれませんが、それでも正しい答えです。すべての Microsoft ブラウザーを特定する方法を尋ねている場合は、問題(または問題であると認識しているもの) に誤ってアプローチしています。

適切な解決策として、 jQueryModernizrなどのツールを使用することをお勧めします。これらは、API の正規化、古いブラウザーでの新しい要素のシミング、および機能検出を処理します。これは物事を行う正しい方法であり、開発者が最初からこのアプローチをとっていれば、今日の Internet Explorer にそれほど嫌悪感を持たないかもしれません。

于 2013-03-26T18:19:40.363 に答える
3

質問で指定したリンク - もう機能しません- Windows Internet Explorer Engineering Team Blog へのリンクは、次のステートメントにつながります

条件付きコメント

<!--[if IE]>

This content is ignored in IE10 and other browsers.

In older versions of IE it renders as part of the page.

<![endif]-->

これは、条件付きコメントを引き続き使用できることを意味しますが、古いバージョンの IE のみを対象とします。最近のブラウザーを区別する必要がある場合は、代わりに機能検出を使用してください。

上記の機能検出リンクからの引用が示すように、IE チームはブラウザー検出ではなく機能検出の使用を強く推進しているように私には思えます。

同じマークアップ: コア ガイドライン

**DO**
    Feature Detection
    Test whether a browser supports a feature before using it.
    Behavior Detection
    Test for known issues before applying a workaround. 
**DON'T**
    Detect Specific Browsers
    Also known as browser detection. Don't use the identity of a browser (e.g. navigator.userAgent) to alter page behavior.
    Assume Unrelated Features
    Don't perform feature detection for one feature, and then proceed to use a different feature.

そのため、Windows Internet Explorer エンジニアリング チームは、IE10 以降でブラウザ検出を使用できないように IE をセットアップしているようです。

編集私はIE10を使用していませんが、使用しています

navigator.appName=='Microsoft Internet Explorer';

IE10で動作しますか?

于 2013-03-26T10:11:45.387 に答える
0

IE10 で十分だと言って、問題を無視するだけでは十分ではありません。それは本当にあなたがやろうとしていることに依存します。ほとんどの場合、機能検出で必要なものが処理される可能性があります。はるかに複雑なルートは、HTTP リクエスト ヘッダーからユーザー エージェント文字列を取得することによってユーザー エージェントの検出を開始することです。これに注意しないと、すぐに間違ってしまう可能性があります。

現在のユーザー エージェント文字列をブラウザの JS コンソールで表示するには:

console.log(navigator.userAgent);

以下は、すべての種類のブラウザで報告されたユーザー エージェント文字列のリストです。

http://www.zytrax.com/tech/web/browser_ids.htm

すべての MS Explorer エージェント文字列には「MSIE」が含まれますが、最初に「MSIE」文字列を含む場合がある Opera などのブラウザーを除外する必要があります。

于 2013-03-26T16:47:27.183 に答える
-1

この関数はtrue、クライアント ブラウザがバージョン9-10-11でテスト済みのInternet Explorerである場合に返されます。

function isIE(v) {
    var ie;
    ie = RegExp('msie' + (!isNaN(v)?('\\s'+v):''), 'i').test(navigator.userAgent);
    if (!ie) { ie = !!navigator.userAgent.match(/Trident.*rv[ :]*11\./) }
    return ie;
}

// Example
var ie = isIE();
var ie9 = isIE(9);
var ie10 = isIE(10);

注: この機能は不完全であり、isIE(11)

于 2015-07-20T10:42:44.407 に答える