Jak można wykryć, czy przeglądarka obsługuje wyświetlanie atrybutów CSS: blok inline?Wykryj obsługę przeglądarki dla wyświetlacza: blok inline
Odpowiedz
Nie można tego wykryć za pomocą JavaScriptu, ponieważ jest to czysty atrybut CSS, który nie odnosi się do żadnego obiektu lub funkcji w JavaScript. Najlepsze, co mogę powiedzieć, to sprawdzenie, czy here jest całkiem niezłą listą kompatybilności i użycie CSS do utworzenia obejścia.
Według QuirksMode charts jedynymi przeglądarek głównego nurtu nie są nośne inline-block
IE6 i 7 (Dobrze, że wspierają go, ale tylko dla elementów, które mają natywną display
typ inline
.) Ja po prostu założyć, że jest obsługiwany a następnie zastosować obejście dla IE6/7 przez conditional comments.
. (Uwaga: Ja ignorując brak Firefox 2 za wsparcie dla inline-block
i zakładając, że większość użytkowników uaktualnieniu do FF3, ale krótki googling nie ujawniło żadnych numerów do siebie, że się YMMV.)
Jeśli jednak ustalenie wsparcia z JavaScript jest Twoją jedyną opcją, musisz powrócić do sniffingu przez użytkownika. Klasa YAHOO.env.ua z YUI library to poręczny fragment kodu, który można skopiować i wykorzystać. (Jest licencjonowany na BSD, nie zależy od innych części biblioteki YUI i ma tylko około 25-30 linii bez komentarzy)
Po prostu sprawdziłem statystyki na mojej stronie i wydaje mi się, że wspierają one twoje założenie, że większość użytkowników FF zmieniło się na FF 3. I IMO to dobry pomysł na projektowanie w przyszłości. –
Cóż, oto, co możesz zrobić, jeśli chcesz zrobić to wyłącznie poprzez zbadanie bavhiour przeglądarki w javascript zamiast snipowania agenta użytkownika:
Skonfiguruj scenariusz testowy i scenariusz kontrolny. Z, powiedzmy, o następującej strukturze:
- div
- div w/treści "test"
- div w/content "test2"
Włóż jedną kopię do dokument z dwoma wewnętrznymi elementami div ustawionymi na blok inline i wstaw inną kopię do dokumentu z dwoma wewnętrznymi blokami div ustawionymi na blok. Jeśli przeglądarka obsługuje blok wbudowany, to divy zawierające będą miały różne wysokości.
odpowiedź Alternatywny:
Można również użyć getComputedStyle zobaczyć jak przeglądarka traktuje css danego elementu. Tak więc teoretycznie można dodać element z "display: inline-block", a następnie sprawdzić computedStyle, aby zobaczyć, czy przetrwał. Jedyny problem: IE nie obsługuje getComputedStyle. Zamiast tego ma currentStyle. Nie wiem, czy currentStyle działa identycznie (prawdopodobnie działa podobnie do zachowania, które chcemy: pomijając "nieprawidłowe" wartości).
Właśnie przetestowałem to (przez [@ Alan H] (http://stackoverflow.com/a/5049711/2688) [jsFiddle] (http://jsfiddle.net/JvTBZ/)) i 'currentStyle' pokazuje' inline -block dla elementów, które nie są obsługiwane (np. 'div's w IE 6 i 7) – bdukes
Twój drugi test działa (przynajmniej w czystym pokoju jsFiddle): http://jsfiddle.net/bdukes/cHUps/5/ – bdukes
Przy okazji: Istnieje a neat way do implementacji bloków wbudowanych w przeglądarki w IE6 +, FF2 +, Opera i WebKit z samym CSS. (Niepoprawny CSS, ale wciąż tylko CSS.)
Christopher Swasey jest całkiem poprawny.
Utworzyłem demo jsFiddle jego techniki na http://ajh.us/test-inline-block.
Kod jest w istocie:
var div = document.createElement('div');
div.style.cssText = 'display:inline-block';
// need to do this or else document.defaultView doesn't know about it
$('body').append(div);
// that was jQuery. It’s possible to do without, naturally
var results = false;
if (div.currentStyle) {
results = (div.currentStyle['display'] === 'inline-block');
} else if (window.getComputedStyle) {
results = document.defaultView.getComputedStyle(div,null).getPropertyValue('display')=== 'inline-block';
}
//clean up
$(div).remove();
alert('display: inline-block support: '+results);
Należy pamiętać, to dokładnie ten sam technika działa również do wykrywania display: run-in
wsparcie.
Używając tej techniki, moje maszyny IE 6 i 7 mówią, że obsługują 'inline-block' na' div', kiedy w rzeczywistości oba wyświetlają go jako element 'block'. – bdukes
- 1. Blok wyświetlacza bez 100% szerokości
- 2. Wykryj obsługę przeglądarek HTML Media Capture
- 3. Wykryj obsługę przejścia z JavaScriptem
- 4. Wykryj odświeżanie przeglądarki
- 5. jak używać fadeIn z wyświetlaczem = blok inline
- 6. Jak zmienić indeks Z wyświetlacza: element inline-block?
- 7. Jak wykrywać obsługę przeglądarki dla funkcji pageShow i pageHide?
- 8. Wykryj system operacyjny z rozszerzenia przeglądarki Firefox
- 9. Wykryj wewnątrz przeglądarki Android lub WebView
- 10. Prevent inline blok od owijania ale pozwalają zawartość zawinąć
- 11. Błąd linii IE10 z wyświetlaczem: blok inline; i przepełnienie: ukryte;
- 12. Jak włączyć obsługę mDNS w pasku adresu przeglądarki Android?
- 13. pionowe wyrównanie tekstu wielokrotnego rozpiętości w linii wyświetlacza: Element inline-block
- 14. Wykryj, kiedy wideo z przeglądarki stanie się pełnoekranowe w ios8
- 15. Jaki jest pożytek z zestawów wyświetlacza iCloud?
- 16. Jak napisać obsługę wyjątków dla błędnych danych wejściowych?
- 17. Blok ładunków Django dla css
- 18. Wykryj typ pliku w rozwiązaniu przeglądarki krzyżowej dragenter
- 19. Wykryj, czy przeglądarka mobilna obsługuje przepełnienie: przewiń
- 20. Wykryj fokus przeglądarki/nieostre przez rozszerzenie Google Chrome
- 21. Wykryj, czy instalacja przeglądarki Chrome jest 64-bitowa
- 22. Wykryj Eof dla obrazów JPG
- 23. Wykryj podstawową przyczynę dla java.io.FileNotFoundException
- 24. Polecenie uśpienia wyświetlacza OSX
- 25. Domyślna szerokość wyświetlacza ImageFlow
- 26. Dodatek dla przeglądarki Firefox do błędu przeglądarki
- 27. Razorowy dwukropek ucieczkowy inline
- 28. chrome.webrequest.onbeforerequest.addlistener dla przeglądarki Firefox?
- 29. Obsługa przeglądarki dla stopImmediatePropagation?
- 30. Jak zapewnić obsługę skryptów dla aplikacji Qt?
@ Al H: Cześć! Nie znam cię, ale doceniam twoją konstruktywną krytykę za moją odpowiedź! Czekam również na Twoją odpowiedź na to pytanie, w którym pokazujesz nam, jak to zrobić. Pokażesz nam drogę, prawda? :) –
http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting Właściwie Christopher Swasey oferuje sposób na wykrycie go za pomocą JS w poniższej odpowiedzi. A przynajmniej Alan H. napisał w twoim pytaniu, co uważał za problem. Dostaję na dół stare odpowiedzi bez tego luksusu. – Boldewyn
@Boldewyn: Uważam, że artykuł, do którego prowadzi łącze, i odpowiedź Christophera Swasey'a poniżej, mogą być obejściami (* dobre * obejścia, ale mimo to obejścia). Nadal uważam, że nie ma "czystej" metody wykrywania obsługi przeglądarki dla określonej funkcji CSS. Również nie nazwałbym komentarza Alana luksusem. :) –