12

私は、JavaScriptまたは条件付きコメント(またはそれが取るもの)を使用して、IEユーザーへの1つのリンクと他のすべてのブラウザーへの別のリンクを表示する方法を見つけようとしています。

基本的に...

//pseudo code
<!--[if IE]>
    <a href"ie-only.html">click here!</a>
<!--[else]>
    <a href"all-other-browsers.html">click here!</a>
<![endif]-->

これは条件付きコメントタグ(Internet Explorerでのみ機能する)では不可能だと思います。さらに、「他の」ステートメントはないと思います。

javascriptでこれを行う方法はありますか?助けてください!ありがとう!

4

9 に答える 9

23

条件付きコメントタグ(Internet Explorerでのみ機能する)ではこれは不可能だと思います

もちろんそうだ。非IEブラウザーのコンテンツは、条件付きコメント句の一部であるが、実際には<!-コメント->内にはないような位置に残す必要があります。そうすれば、条件付きコメントを知らないブラウザはコンテンツを問題なく見ることができます。これは、ダウンレベルで明らかにされた条件付きコメントとして知られています。

残念ながら、Microsoftが提供するマークアップには無効なHTMLがあります(整形式のXMLでさえありません)。マスターを通過させるには、いくつかの追加の'-'が必要です。

<!--[if IE]> This is IE! <![endif]-->
<!--[if !IE]><!--> This ain't IE! <!--<![endif]-->

AnonJrの無回答をエコーする必要がありますが、他のブラウザーと比較してIE用に完全に別個のリンク/ページが必要になることはまれです。複雑なVMLやActiveXがIEで他のブラウザのFlashを使用して動作するなどのトリッキーなことをしている場合は、理由があると思いますが、通常、同じ基本ページでのCSSとスクリプトのハックで十分です。

于 2009-04-11T00:03:34.280 に答える
13

これは一般的な答えにはなりませんが、誰かがそれを投稿し始めたのはいまいましい時間です-ブラウザ固有のがらくたで止めてください。新しいバージョンが出たときだけ、あなたは将来の問題を永続させています。

開発者が追加の時間を費やしていた場合(はい、時間と労力がかかります。クライアントに十分な努力をしていないことを納得させることができない場合)、IE7が「ウェブを壊す」のを見たことはなかったでしょう。 IE8ではさらに少ないです。

はい、IEは他のIEよりも標準に準拠していません。しかし、Fxには、標準の一部でもある特定のものが欠けています。「標準」に関しては、それらはすべて最悪です。しかし、それらはすべて良くなっています。(さまざまなレートで、しかしそれらはすべて良くなっています。)

最初にこれを行おうとしている理由を考え、次のブラウザバージョンがリリースされたときに本当にこれに対処したいかどうかを自問してください。ブラウザの検出と、ブラウザYのバージョンXの処理方法を再調整する必要があります。

[/ rant]

編集:私が実際に質問に答えなかったという明らかな事実を指摘するコメントのいくつかに答えるために、この質問は、人が釘を打つことを決定するのを助けようとしているのではないかと思います。ガラス瓶または靴...

于 2009-04-10T21:35:48.583 に答える
6

これは、Microsoftが承認した方法です。

<!--[if IE]>
    <a href="ie-only.html">click here!</a>
<![endif]-->
<![if !IE]>
    <a href="all-other-browsers.html">click here!</a>
<![endif]>

詳細については、http://msdn.microsoft.com/en-us/library/ms537512 (VS.85).aspxを参照してください。

編集

このコードは、IE 5以降のIEの現在および将来のすべてのバージョンで動作することが暗黙的に保証されています。IE以外のブラウザーの場合、コードは、「無意味な」<![if !IE]>タグを無視するブラウザーに依存することで動作します。それが失敗するのを見たことがない。古き良きHTMLコメントのみを使用するバージョンについては、bobinceの回答を参照してください。これは、Microsoftが提供するソリューションよりも実際に好んで使用しています。

于 2009-04-10T20:58:39.327 に答える
3

私がそれを行う方法を理解した1つの方法:

http://www.quirksmode.org/js/detect.htmlからjavascriptコードを取得し、<head>タグに入れます。

次に、<body>タグで次を使用します。

<script type="text/javascript">
<!--
if (BrowserDetect.browser == 'Explorer') {
    document.write('<a href="#">Explorer</a>');
} else {
    document.write('<a href="#">Other Browsers</a>');
}
// -->
</script>

これが最も簡単な方法かどうかはわかりませんが、作業は完了しました。

于 2009-04-10T21:14:25.060 に答える
2

暗闇の中でのショットかもしれませんが、これはうまくいくでしょうか?

<style>

    a.forIeOnly {display: none; }
    a.notForIe  {display: block; }

</style>

<!--[if ie]>

<style>
    a.forIeOnly {display: block;}
    a.notForIe  {display: none; }
</style>

<![endif]-->

<a href="#" class="forIeOnly">Link One</a>
<a href="#" class="notForIe">Link Two</a>

if / elseステートメントほどクリーンで魅力的なものではありませんが、ソリューションを実装するために考えられる最も簡単な方法でした。それはそれ自身の問題に満ちているかもしれませんが。

于 2009-04-10T21:04:23.523 に答える
1

これをヘッダーに追加します:

<script src="http://github.com/rafaelp/css_browser_selector/raw/master/css_browser_selector.js" type="text/javascript"></script>

次に、.cssページに必要なものは何でも:

/* Chrome Only */
.chrome embed {
    display: none;
}

/* Firefox Only */
.gecko video {
    display: none;
}

ソース: http: //rafael.adm.br/css_browser_selector/

利用可能なブラウザコード[ブラウザ]:

ie - Internet Explorer (All versions)
ie8 - Internet Explorer 8.x
ie7 - Internet Explorer 7.x
ie6 - Internet Explorer 6.x
ie5 - Internet Explorer 5.x
gecko - Mozilla, Firefox (all versions), Camino
ff2 - Firefox 2
ff3 - Firefox 3
ff3_5 - Firefox 3.5
ff3_6 - Firefox 3.6 new
opera - Opera (All versions)
opera8 - Opera 8.x
opera9 - Opera 9.x
opera10 - Opera 10.x
konqueror - Konqueror
webkit or safari - Safari, NetNewsWire, OmniWeb, Shiira, Google Chrome
safari3 - Safari 3.x
chrome - Google Chrome
iron - SRWare Iron
于 2015-09-01T19:14:11.007 に答える
0

私は試しませんでしたが、CSSでIEの欠陥を使用できるかもしれません。Eric Meyerは、このテーマについてこの記事を書いています:ブラウザのトリックとスタイルの非表示

于 2009-04-10T21:01:14.967 に答える
0

いつでもCSSを使用して、特定のブラウザーからコードを非表示にすることができます。たとえば、次のコードを考えます。

<a href"ie-only.html" id="ie-only">click here!</a>
<a href"all-other-browsers.html" id="other-browsers">click here!</a>

次のCSSハックを適用すると、適切なリンクが適切なブラウザに表示されます。

/* Display settings for most browsers */
#ie-only {display: none;}
#other-browsers {display: block;}

/* Display settings for IE <= 6 */
* html #ie-only {display: block;}
* html #other-browsers {display: none;}
于 2009-04-10T21:05:38.123 に答える
0

IEは条件付きコンパイルをサポートしています。これを使用すると、ユーザーエージェントのスニッフィングや機能の検出を実行しなくても、IEのみのコードを簡単に配信できます。

/*@cc_on
   /*@if (@_jscript)
      alert("IE.");
   @else @*/
      alert("Not IE.");
   /*@end
@*/
于 2009-04-10T21:54:01.440 に答える