2010-12-10 13 views
25

Używam skryptu karuzeli obrazu, który jest dość ciężki w przeglądarce. Działa wspaniale w Operze i Chrome, w połowie przyzwoitym w FF i absolutnie łamie moje jaja w IE. Chciałbym dać użytkownikom IE alternatywę prostego kodu HTML bez żadnej akcji/JS.Jeśli przeglądarka to Internet Explorer: uruchom alternatywny skrypt zamiast:

Skrypt nie korzysta z MT lub jQuery i przypomina 380 linii JS. Czy byłoby możliwe podanie użytkownikom IE zwykłej alternatywy HTML?

var browserName=navigator.appName; if (browserName=="Microsoft Internet Explorer") { // what command can i use? }

+1

Pamiętaj, że wszystkie (lub prawie) poniższe odpowiedzi wymieniają komentarze warunkowe. Komentarze warunkowe są przestarzałe od IE10. Zobacz http://blogs.msdn.com/b/ie/archive/2011/07/06/html5-parsing-in-ie10.aspx?Redirected=true –

Odpowiedz

21

Ten artykuł jest dość wyjaśniająca: http://msdn.microsoft.com/en-us/library/ms537509%28v=vs.85%29.aspx.

Jeśli JS jest dyskretny, można po prostu użyć:

<![if !IE]> 
    <script src... 
<![endif]> 
+2

Znalazłem użycie ' "zapisane przez boczek. Dzięki! –

+2

Komentarze warunkowe są przestarzałe od IE10. Zobacz http://blogs.msdn.com/b/ie/archive/2011/07/06/html5-parsing-in-ie10.aspx?Redirected=true –

+0

@AdrienBe Czy próbowali zabić Internet Explorera? Po co usuwać funkcję, która pozwala nam dostosować się do jej wad? –

19

można zrobić coś takiego to IE-specyficzne javascript:

<!--[IF IE]> 
    <script type="text/javascript"> 
     // IE stuff 
    </script> 
<![endif]--> 
+1

zapomniałeś "!", Myślę:

+4

to jest złe. warunek musi znajdować się poza tagami skryptu. – wlf

4

var browserName = navigator.appName; if (browserName == "Microsoft Internet Explorer") { document.write ("HTML dla IE") }

+0

Dla każdego, kto używa tej odpowiedzi, zobacz ten post pierwszy. IE 11 ma pewne problemy ze zgodnością z tym podejściem. http://stackoverflow.com/questions/17907445/how-to-detect-ie11 –

9

Dla IE10 warunkach + standart nie działają przyczyną zmian silnika lub kilku kolejnych powodów, bo , wiesz, to jest MSIE. Ale dla IE10 + trzeba uruchomić smth jak to w skryptach

if (!!navigator.userAgent.match(/Trident\/7\./)){ 
//do stuff for IE. 
} 
+0

Najbardziej przydatna odpowiedź na bieżąco. Powinien być na górze. – carla

0

przetestować go we wszystkich przeglądarkach:

<![if !IE]><script type="text/javascript">BROWSERIE = false;</script><![endif]> 
<!--[if IE]><script type="text/javascript">BROWSERIE = true;</script><![endif]--> 

Pierwsze prace warunkowe komentarz na temat dobrych przeglądarek, drugi działa na IE. To globalny var.Następnie można uzyskać do niego dostęp z dowolnej części lub dowolnej JS zawarte na stronie, a następnie przetestować go, jak:

console.log('isIE = ' + BROWSERIE); 
console.log(typeof BROWSERIE); 
if(BROWSERIE) $('.modal').removeClass('fade'); // for example, if `fade` causes an error in IE. 
+0

bardzo konstruktywny: downvoter bez lepszej opinii! –

0

Spróbuj tego: systemLanguage i JęzykUżytkownika jest niezdefiniowane w całej przeglądarki.

if(navigator.userLanguage !== "undefined" && navigator.systemLanguage !== "undefined" && navigator.userAgent.match(/trident/i)) { 
    alert("hello explorer i catch U :D") 
    } 
Powiązane problemy