12 Stimmen

Wie kann man browser-spezifisches HTML anzeigen?

Ich versuche, einen Weg zu finden, um einen Link zu einem IE-Benutzer und einen anderen Link zu allen anderen Browsern mit Javascript oder bedingte Kommentare (oder was auch immer es dauert) anzuzeigen.

Im Grunde genommen...

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

Ich glaube nicht, dass dies mit bedingten Kommentar-Tags möglich ist (die nur im Internet Explorer funktionieren). Außerdem glaube ich nicht, dass es eine "else"-Anweisung gibt.

Gibt es eine Möglichkeit, dies mit Javascript zu tun? Bitte um Hilfe! Danke!

23voto

bobince Punkte 512550

Ich glaube nicht, dass dies mit bedingten Kommentar-Tags möglich ist (die nur im Internet Explorer funktionieren)

Ja, natürlich. Sie müssen nur den Inhalt für Nicht-IE-Browser so platzieren, dass er Teil einer bedingten Kommentar-Klausel ist, aber nicht innerhalb eines <!-- Kommentars -->. Dann sehen Browser, die bedingte Kommentare nicht kennen, den Inhalt problemlos. Dies ist bekannt als downlevel-enthüllt bedingter Kommentar.

Leider ist das Markup, das Microsoft Ihnen dort gibt, ungültiges HTML (und nicht einmal wohlgeformtes XML). Um es zulässig zu machen, brauchen Sie nur ein paar zusätzliche "--"s:

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

Allerdings muss ich mich AnonJr's Nicht-Antwort anschließen, denn es ist selten, dass man für den IE einen komplett separaten Link/eine separate Seite braucht, verglichen mit anderen Browsern. Wenn Sie etwas kniffliges wie komplexe VML und ActiveX Arbeit in IE mit Flash auf anderen Browsern ich denke, es könnte ein Grund dafür sein, aber in der Regel ein paar CSS und Skript Hacks über die gleiche grundlegende Seite sollte ausreichen.

6voto

David Kolar Punkte 3427

Dies ist der von Microsoft genehmigte Weg:

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

Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx .

Editar

Dieser Code garantiert implizit, dass er in allen aktuellen und zukünftigen Versionen des IE ab IE 5 funktioniert. Bei Nicht-IE-Browsern funktioniert der Code, indem er sich darauf verlässt, dass diese Browser die "unsinnige" <![if !IE]> Tag, was sie alle tun, und ich habe noch nie erlebt, dass es fehlgeschlagen ist. Für eine Version, die nur die guten alten HTML-Kommentare verwendet, siehe Antwort von bobince die ich der von Microsoft bereitgestellten Lösung vorziehe.

3voto

Andrew Punkte 210206

Ich habe eine Möglichkeit herausgefunden, wie man das macht:

Holen Sie sich den Javascript-Code von http://www.quirksmode.org/js/detect.html und legen Sie sie in den <head> Tag.

Dann in Ihrem <body> Tag verwenden:

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

Ich bin mir nicht sicher, ob dies die einfachste Methode ist, aber es hat funktioniert.

2voto

David Thomas Punkte 239063

Vielleicht ein Schuss ins Blaue, aber würde das funktionieren?

<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>

Es ist nicht annähernd so sauber/attraktiv wie eine if/else-Anweisung sein könnte, aber... es war der einfachste Weg, den ich mir vorstellen konnte, um eine Lösung zu implementieren. Auch wenn es durchaus mit eigenen Problemen behaftet sein kann.

1voto

Nato Boram Punkte 2709

Fügen Sie dies zu Ihrer Kopfzeile hinzu:

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

Dann, was immer Sie wollen, auf Ihre .css-Seite:

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

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

Source : http://rafael.adm.br/css_browser_selector/

Verfügbare Browser-Codes [browser]:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X