Jak ustawić kierowanie tylko na Internet Explorer 10 w pewnych sytuacjach, takich jak kod CSS specyficzny dla programu Internet Explorer lub kod JavaScript specyficzny dla programu Internet Explorer?
Próbowałem tego, ale to nie działa:
<!--[if IE 10]> <html class="no-js ie10" lang="en"> <![endif]-->
<!--[if !IE]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
Internet Explorer 10 ignoruje komentarze warunkowe i używa <html lang="en" class="no-js">
zamiast <html class="no-js ie10" lang="en">
.
@cc_on
stwierdzenie . Tak więc, aby wykryć czy IE10 jest obsługiwany lub nie, można użyć następującego kodu:<!--[if !IE]><!--><script>if(/*@cc_on!@*/false){document.documentElement.className+=' ie10';}</script><!--<![endif]-->
. (Opublikowałem to jako komentarz, ponieważ IE jest nadal w fazie rozwoju, więc nie wiadomo, czy ostateczna wersja obsługuje również tę funkcję)<script>if(Function('/*@cc_on return document.documentMode===10@*/')()){document.documentElement.className+=' ie10';}</script>
Ulepszenia: nie wymaga warunkowych komentarzy; działa nawet wtedy, gdy usuwa kompresję / przetwarzanie komentarzy; brak dodanej klasy dla ie11; będzie współpracować z ie11 działającym w trybie zgodności ie10; nie potrzebuje samodzielnego tagu skryptu (można go po prostu dodać do innego javascript w głowie).if(document.documentMode) document.documentElement.className+=' ie'+document.documentMode+'mode';
- które rozwiązuje 90% problemów (czasami tryby zgodności zawodzą, w takim przypadku potrzebny jest inny poziom poprawki).Odpowiedzi:
Być może możesz wypróbować kilka jQuery w ten sposób:
Aby skorzystać z tej metody, należy dołączyć bibliotekę jQuery Migrate, ponieważ ta funkcja została usunięta z głównej biblioteki jQuery.
Wyszło mi całkiem nieźle. Ale z pewnością nie zastąpi komentarzy warunkowych!
źródło
== '10.0'
, żeby to zadziałałojQuery.browser
nie jest już dostępny w aktualnej wersji jQuery (1.9) bez wtyczki. blog.jquery.com/2013/01/15/…if (jQuery.browser.msie && jQuery.browser.version < 10) { // do what you will here }
Zwróć uwagę na wersję <10, aby wykryć starsze wersje IE. IE10 i nowsze działają dobrze ze wszystkimi moimi CSS3, HTML5, jquery itp.Nie użyłbym JavaScript
navigator.userAgent
ani $ .browser (który używanavigator.userAgent
), ponieważ można go sfałszować.Aby kierować reklamy na Internet Explorer 9, 10 i 11 (uwaga: także najnowszy Chrome):
Aby kierować reklamy na Internet Explorer 10:
Aby skierować reklamy do przeglądarki Edge:
Źródła:
źródło
navigator.userAgent
”? Kompilacja warunkowa to wbudowana funkcja środowiska wykonawczego JScript, której nie można sfałszować za pomocą ciągu agenta użytkownika.Znalazłem rozwiązanie na tej stronie, gdzie ktoś miał cenny komentarz :
Rozwiązaniem jest:
To
źródło
if (/*@cc_on!@*/false && document.documentMode === 10) {}
który omija ostrzeżenia ewaluacyjne w programach lintujących.Internet Explorer 10 nie próbuje już czytać komentarzy warunkowych.Oznacza to, że będzie traktować komentarze warunkowe tak, jak każda inna przeglądarka: jako zwykłe komentarze HTML, które mają być całkowicie ignorowane. Patrząc na znaczniki podane w pytaniu jako przykład, wszystkie przeglądarki, w tym IE10, całkowicie zignorują fragmenty komentarza, podświetlone na szaro. Standard HTML5 nie wspomina o warunkowej składni komentarzy i właśnie dlatego zdecydował się zaprzestać obsługi tego w IE10.
Należy jednak pamiętać, że kompilacja warunkowa w języku JScript jest nadal obsługiwana, jak pokazano w komentarzach, a także w nowszych odpowiedziach. W przeciwieństwie do tego
jQuery.browser
, nie zniknie też w ostatecznej wersji . I oczywiście jest oczywiste, że węszenie klienta użytkownika pozostaje tak delikatne jak zawsze i nigdy nie powinno być używane w żadnych okolicznościach.Jeśli naprawdę musisz celować w IE10, użyj kompilacji warunkowej, która może nadal być obsługiwana w najbliższej przyszłości, lub - jeśli możesz w tym pomóc - użyj biblioteki wykrywania funkcji, takiej jak Modernizr, zamiast (lub w połączeniu z) wykrywaniem przeglądarki. O ile twój przypadek użycia nie wymaga noscript lub dostosowania IE10 po stronie serwera, węszenie klienta użytkownika będzie bardziej uciążliwe niż opłacalna opcja.
Brzmi dość nieporęcznie, ale pamiętaj, że jako nowoczesna przeglądarka, która jest wysoce zgodna z dzisiejszymi standardami sieciowymi 1 , zakładając, że napisałeś kod interoperacyjny, który jest wysoce zgodny ze standardami, nie powinieneś odkładać na bok specjalnego kodu dla IE10, chyba że jest to absolutnie konieczne, tzn. ma przypominać inne przeglądarki pod względem zachowania i renderowania. 2 I brzmi to naciągane, biorąc pod uwagę historię IE, ale ile razy spodziewałeś się, że Firefox lub Chrome będą zachowywać się w ten sam sposób, tylko po to, by spotkać się z konsternacją?
box-sizing
od lat nie obsługuje unprefixedJeśli zrobić mają uzasadnione powody do kierowania niektórych przeglądarek, za wszelką cenę wąchać je z innymi narzędziami podanych do Ciebie. Mówię tylko, że dziś będzie o wiele trudniej znaleźć taki powód niż to, co było kiedyś, i naprawdę nie jest to coś, na czym można polegać.
1 Nie tylko IE10, ale także IE9, a nawet IE8, który obsługuje większość dojrzałego standardu CSS2.1 znacznie lepiej niż Chrome, po prostu dlatego, że IE8 był tak skoncentrowany na zgodności ze standardami (w tym czasie CSS2.1 był już dość stabilny z niewielkimi różnicami z dzisiejszej rekomendacji), podczas gdy Chrome wydaje się być trochę więcej niż na wpół dopracowaną demonstracją techniczną nowatorskich pseudo-standardów.
2 I mogę być stronniczy, kiedy to mówię, ale to na pewno. Jeśli Twój kod działa w innych przeglądarkach, ale nie w IE, prawdopodobieństwo, że jest to problem z Twoim własnym kodem, a nie z IE10, jest znacznie większe w porównaniu z, powiedzmy, 3 lata temu, z poprzednimi wersjami IE. Znowu mogę być stronniczy, ale bądźmy szczerzy: czy ty też nie? Spójrz tylko na swoje komentarze.
źródło
<!--[if !IE]><!-->stuff you don't want IE9 and below to see<!--<![endif]-->
Dobrym miejscem do rozpoczęcia jest dokumentacja IE Standards Support Documentation .
Oto jak kierować reklamy na IE10 w JavaScript:
Oto jak kierować reklamy na IE10 w CSS:
W przypadku konieczności przefiltrowania lub zresetowania IE11 przez CSS, zobacz inne pytanie: Jak napisać hack CSS dla IE 11?
źródło
Oba zamieszczone tutaj rozwiązania (z niewielkimi modyfikacjami) działają:
lub
Umieszczasz jedną z powyższych linii w tagu head strony html przed linkiem css. Następnie w pliku css określasz swoje style mając klasę „ie10” jako rodzica:
I voilà! - inne przeglądarki pozostają nienaruszone. I nie potrzebujesz jQuery. Możesz zobaczyć przykład, jak to zaimplementowałem tutaj: http://kardash.net .
źródło
Napisałem małą, waniliową wtyczkę JavaScript o nazwie Layout Engine , która umożliwia wykrywanie IE 10 (i każdej innej przeglądarki) w prosty sposób, którego nie można sfałszować, w przeciwieństwie do podsłuchiwania klienta użytkownika.
Dodaje nazwę silnika renderującego jako klasę do tagu html i zwraca obiekt JavaScript zawierający dostawcę i wersję (w stosownych przypadkach)
Sprawdź mój post na blogu: http://mattstow.com/layout-engine.html i pobierz kod na GitHub: https://github.com/stowball/Layout-Engine
źródło
Używam tego skryptu - jest przestarzały, ale skuteczny w kierowaniu na osobny arkusz stylów programu Internet Explorer 10 lub plik JavaScript, który jest dołączany tylko wtedy, gdy przeglądarka to Internet Explorer 10, tak samo jak w przypadku komentarzy warunkowych. Nie jest wymagana żadna wtyczka jQuery ani inna wtyczka.
źródło
Możesz użyć PHP, aby dodać arkusz stylów dla IE 10
Lubić:
źródło
Jeśli musisz to zrobić, możesz sprawdzić ciąg agenta użytkownika w JavaScript:
Jak wspomniały inne osoby, zawsze zalecałbym zamiast tego wykrywanie funkcji.
źródło
String.match()
zwróci tablicę dla dopasowania lub null, jeśli tak nie jest.!(String.match())
powoduje, że zwraca wartość false w przypadku dopasowania lub true w przypadku braku dopasowania.!(!(String.match()))
powoduje, że zwraca wartość true w przypadku dopasowania lub false w przypadku braku dopasowania.!(!(something))
lub po prostu!!something
konwertuje cokolwiek na boolean true / false. stackoverflow.com/questions/784929/…boolean
wartość wewnętrzną , npvar name = 'me', hasName = !!name;
.Jeśli chcesz kierować reklamy na IE 10 za pomocą Vanilla JavaScript, możesz wypróbować wykrywanie właściwości CSS:
Właściwości CSS
Zamiast tego
msTouchAction
możesz również użyć jednej z tych właściwości CSS, ponieważ są one obecnie dostępne tylko w IE 10. Ale to może się zmienić w przyszłości.Strona testowa
Mam ułożyła stronę testową ze wszystkich właściwości na CodePen.
źródło
clipBoardData to funkcja dostępna tylko w IE, więc jeśli chcesz kierować reklamy na wszystkie wersje IE, możesz użyć
źródło
CSS dla IE10 + i IE9
źródło
Możesz użyć wykrywania funkcji, aby sprawdzić, czy przeglądarka to IE10 lub nowsza:
Prawda tylko wtedy, gdy> IE9
źródło
Conditionizr (zobacz dokumentację) doda klasy CSS przeglądarki do elementu html, w tym ie10.
źródło
Z JavaScript:
Pracuj dla wszystkich IE.
Więc zmiany
/Trident/g
przez/Trident/x.0/g
gdziex = 4, 5, 6
i7
(lub być może8
w przyszłości).źródło
Chciałem tylko dodać moją wersję wykrywania IE. Jest oparty na fragmencie znalezionym na http://james.padolsey.com/javascript/detect-ie-in-js-using-conditional-comments/ i rozszerzony tak, aby obsługiwał również ie10 i ie11. Wykrywa IE od 5 do 11.
Wszystko, co musisz zrobić, to gdzieś go dodać, a potem zawsze możesz sprawdzić z prostym warunkiem. Globalna zmienna
isIE
będzie niezdefiniowana, jeśli nie jest IE, lub w przeciwnym razie będzie to numer wersji. Możesz więc łatwo dodawać rzeczy takie jakif (isIE && isIE < 10)
lub podobne.źródło
U mnie poniższy kod działa dobrze, wszystkie komentarze warunkowe działają we wszystkich wersjach IE:
Jestem na Windows 8.1, nie jestem pewien, czy jest to związane z aktualizacją IE11 ...
źródło
(gt IE 11)
Bit jest całkowicie zbędne. Równie dobrze możesz po prostu to zrobić<!--[if !(IE)]<!-->
.Oto jak robię niestandardowy CSS dla Internet Explorera:
W moim pliku JavaScript:
A następnie w moim pliku CSS y zdefiniuj każdy inny styl:
źródło
Sprawdź http://suhasrathod.wordpress.com/2013/04/29/ie10-css-hacks/
źródło
użyj babel lub maszynopisu do konwersji tego kodu js
źródło
Ta odpowiedź doprowadziła mnie do tego w 90%. Resztę odpowiedzi znalazłem w witrynie Microsoft tutaj .
Poniższy kod jest tym, czego używam do kierowania wszystkich, tj. Poprzez dodanie klasy .ie do
<html>
Użyj jQuery (który przestał działać .browser na rzecz klientów użytkownika w wersji 1.9+, zobacz http://api.jquery.com/jQuery.browser/ ), aby dodać klasę .ie:
źródło
Jeśli nie masz nic przeciwko kierowaniu na przeglądarki IE10 i nowsze oraz przeglądarki inne niż IE, możesz użyć tego warunkowego komentarza:
Pochodzi z http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither
źródło
Jeśli naprawdę musisz, możesz sprawić, by komentarze warunkowe działały, dodając następujący wiersz do
<head>
:Źródło
źródło
nowoczesne rozwiązanie dla css
źródło