Używam wielu bibliotek (w tym własnych) do dynamicznego ładowania zasobów na podstawie zapytań o media, które opisałem w plikach CSS. Na przykład:Uzyskiwanie dostępu do reguł zapytań dotyczących nośników CSS za pomocą JavaScript/DOM
W CSS:
@media screen and (max-width: 480px) {
.foo {
display: none;
}
}
I z wykorzystaniem ładowacza aktywów; require.js, modernizr.js etc lub wykorzystujące window.matchMedia
i związane addListener()
funkcje:
if (function("screen and (max-width: 480px)")){
// Load several files
load(['mobile.js','mobile.css']);
}
dwukrotnie Deklarowanie nich jest niewygodne/głupie i tak daleko, jak mogę znaleźć, wszystkie biblioteki pomocnicze i Aktywami ładowarki JS wymaga powtarzania zapytań o media zamiast Lokalizowanie ich programowo z JS/DOM.
Tak więc, badałem możliwość dostępu do wartości programowo przez document.stylesheets
, ale nie jestem pewien, czy są one dostępne i wydaje się, że istnieje bardzo mało dokumentacji, która mogłaby sugerować, że są.
Najdalej szukałem CSSMediaRule
i używam console.dir(document.stylesheets)
do eksploracji obiektu arkusza stylów.
Nie ma żadnych odniesień (w zakresie document.stylesheets
) do faktycznych reguł zapytań o media stosowanych w CSS - tylko klasy, które mają być stosowane w wyniku zapytań o media ... Co próbuję zlokalizować programowo, jest "ekran oraz (max-width: 480px)"
Czy istnieje sposób dostępu do takich zapytaniu CSS Nośniki zasady poprzez JavaScript/DOM?
Ups, zły link [oto artykuł Szukałem na coderwall] (https: // coderwall. com/p/_ldtkg) – steveax
Dobre pytanie. Dla moich celów zawsze sprawdzałem, czy określone elementy były widoczne, czy nie, ponieważ moja interakcja JavaScriptu dotyczyłaby tych elementów. Powinno jednak istnieć lepsze, bardziej ogólne rozwiązanie. – Brad
Hej, sprawdź to. To może być rozwiązanie. https://github.com/nathansmith/adapt/blob/master/assets/js/adapt.js –