2011-01-26 12 views
12

Tak więc chcę niektórych plików JavaScript dla niektórych szerokości przeglądarki. Wiem, że @media udostępnia określone CSS na szerokość przeglądarki i niektóre urządzenia. Jak zrobić coś podobnego w przypadku plików JavaScript, BEZ korzystania z połączeń po stronie serwera?Jak wyświetlać różne pliki javascript według szerokości przeglądarki

Czy jest możliwe z Javascriptem wywoływanie innych plików JavaScript na podstawie szerokości przeglądarki? Jeśli tak, jak?

Z góry dziękuję.

+0

Dlaczego potrzebne są różne pliki javascript? Co się stanie, jeśli użytkownik zmieni rozmiar okna? –

+1

Nie mam wątpliwości, że potrzebny jest inny kod dla różnych szerokości, lepsza praca nad logiką. –

+1

Wiem, że coś takiego byłoby wspaniałe przy użyciu zapytań o media. Wiele elementów, które wymagałyby js, już nie istnieje z mobilnym arkuszem stylów. Osobiście chciałbym zatrzymać ładowanie js w ogóle, jeśli przeglądarka spadnie poniżej pewnej szerokości. –

Odpowiedz

3

Chociaż nie jestem pewien dlaczego, zawsze można importować pliki JavaScript za pomocą skryptu JS.

Poniższe linki podają pewne informacje na ten temat.

Na marginesie - Dlaczego patrzysz na to robi? Z pewnością możesz uzyskać rozdzielczość ekranu, a następnie dostosować obliczenia/zawartość w oparciu o te zmienne bez konieczności zmiany plików JS. Jest tak wiele różnych rozdzielczości (urządzenia mobilne, wiele monitorów, szeroki ekran, projektory itp.). Użytkownik może również zmienić rozmiar przeglądarek skutecznie, co nie jest tego warte.

+0

Patrzę na to przede wszystkim, aby zmienić menu akordeonowe na rozmiar okna mobilnego i zanik menu dla rozmiarów przeglądarki na komputerze. – ClosDesign

+1

@Carlos: Nie sądzę, że znam jedną stronę, która używa tej strony na komputery stacjonarne. Oszczędziłbym sobie głowy i spojrzałam na przekierowanie przeglądarki i martwiłam się bardziej o samą stronę. Poza tym, chyba że masz ** bardzo ** prostą stronę, prawdopodobnie będziesz chciał ją usprawnić na komórkę w każdym razie (cut media, nadmiar grafiki itp.). –

13
var scriptSrc = 'js/defaults.js'; 
if (screen.width <= 800) 
    scriptSrc = 'js/defaults-800.js'; 
else if (screen.width <= 1024) 
    scriptSrc = 'js/defaults-1024.js'; 
var script = document.createElement('script'); 
script.src = scriptSrc; 
var head = document.getElementsByTagName('head')[0]; 
head.appendChild(script); 

Być może? Dynamicznie ładuj je na podstawie rozdzielczości ekranu. Może również użyć rozmiaru dokumentu, rozmiaru przeglądarki itp. Chociaż nie jestem pozytywny, naprawdę chcesz to robić. Idealnie, chociaż powinieneś zajmować się względnymi wskaźnikami (takimi jak% lub em) w swoim projekcie i unikać tego.

+0

Próbowałem czegoś podobnego z jQuery ustawiając identyfikator do domyślnego znacznika skryptu, a następnie na podstawie tego pliku. Mogę to wypróbować na swój sposób, w Firebug dostałem błąd na stronie próbującej załadować plik. Wszystkie ścieżki są poprawne, ale mogę po prostu dołączyć to robiąc to w ten sposób. – ClosDesign

+0

Czy myślisz, że mógłbym użyć tego do pominięcia pewnych plików? – ClosDesign

+0

@ Carlos: Tak, możesz. Kluczem jest to, że należy ich unikać w procesie ładowania, dopóki ich nie potrzebujesz/nie chcesz. Can; t rozładować plik, który już załadowałeś, bez wykonywania poważnych re-deklaracji. Jeśli chciałbyś mieć ochotę, możesz uruchomić skrypty w oparciu o względny rozmiar, zrobić kilka wersji, ale powiązać go z jednym popularnym akcesoriem lub po prostu kontynuować tę ścieżkę i załadować, co dotyczy. –

1

Spróbuj tego:

var fileref=document.createElement('script') 
fileref.setAttribute("type","text/javascript") 

if (window.document.body.clientWidth == XXX) { 
    fileref.setAttribute("src", "script1.js") 
} else { 
    fileref.setAttribute("src", "script2.js") 

}

0

media queries są dobrym rozwiązaniem dla zapewnienia alternatywnych stylów dla różnych szerokościach okiennych. Niestety, nie ma żadnego atrybutu media dla elementu <script>, aby postępować w podobny sposób.

Można jednak podać skrypt ładujący skrypt, który załaduje żądany plik .js w zależności od arkusza stylów wybranego przez przeglądarkę na podstawie zapytania o media. Nie wiem, jak to zrobić w bezpośredni, elegancki sposób, ale jest na to fajny hack. Musisz "oznaczyć" każdy znak .css za pomocą unikatowej deklaracji (manekina, nieważne lub różni się w zależności od projektu) i sprawdzić ją w programie JS po załadowaniu strony, aby ustalić, który arkusz stylów został zastosowany przez przeglądarkę.

HTML może wyglądać następująco:

<style media="handheld, screen and (max-width:1023px)"> 
    body { margin-top: 0px } 
</style> 
<style media="screen and (min-width:1024px)"> 
    body { margin-top: 1px } 
</style> 

i towarzyszącego JS następująco:

function onLoad() { 
    var head = document.getElementsByTagName('head')[0]; 
    var body = document.getElementsByTagName('body')[0]; 
    var mark = window.getComputedStyle(body).getPropertyValue('margin-top'); 

    var script = document.createElement('script'); 
    script.setAttribute('src', mark=='0px' ? 'handheld.js' : 'screen.js'); 
    head.appendChild(script); 
} 

ta spełnia swoje zadanie, ale tylko na podstawie na obciążenia. Aby uzyskać elastyczną reakcję na zmianę rozmiaru okna przeglądarki przez użytkownika, powinieneś śledzić szerokość wdów i w razie potrzeby ponownie załadować stronę.

0

Od 2011 roku świat zmienił się w erę mobilną.

Możesz chcieć wypróbować za pomocą: document.documentElement.clientWidth, ponieważ powie Ci ona widoczny obszar twojej strony - reaguje na powiększenie, ale nie na dźwięk.

Powiązane problemy