Rufen Sie eine externe JS-Datei auf, die auf dem Wert "Medienbildschirm" basiert

7

Ich versuche das, aber es funktioniert nicht:

%Vor%

// menu-collapser.js:

%Vor%

Haben Sie eine Idee, wie Sie das richtig machen können? Das Skript funktioniert, wenn es direkt in der Kopfzeile mit den Tags verwendet wird.

    
Mark 04.04.2013, 22:55
quelle

3 Antworten

15

Sie können das nicht direkt mit Javascript <script> tags tun. Medienabfragen werden in verknüpften CSS-Dateien oder Inline-CSS-Stilen verwendet. Ein grundlegendes Beispiel:

%Vor%

Oder direkt in Ihren Stylesheets:

%Vor%

Sie können dafür jedoch eine externe Asset Loader- / Medienabfragebibliothek verwenden ( require.js , modernizr.js , enquire.js und andere), In diesem Fall, ich gebe ein Beispiel mit enquire.js , da ich denke, dass es sehr effektiv ist und jQuery nicht benötigt Standardmäßig:

Vollständiges Beispiel

1) Enthalten Sie enquire.js (verfügbar hier ):

%Vor%

2) Erstellen Sie eine Ladefunktion - um JS-Dateien zu laden:

%Vor%

3) Brennen Sie enquire.js und warten Sie auf Änderungen der Medienabfrage (sowohl beim Laden als auch beim Ändern der Größe):

%Vor%


Alles zusammenfügen

Verwendung einer einfachen HTML-Seite mit enquire.js, die von einer externen Datei geladen wurde:

%Vor%

Zusätzlich zum Laden von JS-Dateien können Sie auch einen CSS-Loader erstellen, der auf die gleiche Weise funktioniert (bedingt), aber das Objekt @media in CSS nicht verwendet. Es lohnt sich, die Verwendungshinweise für enquire.js zu lesen, da es viel mehr kann, als ich dargestellt habe hier.

Vorbehalt: Nichts darüber verwendet jQuery, aber Sie könnten einige der Funktionen nutzen, die es bietet; Laden von Skripten zum Beispiel - oder Ausführen anderer Funktionen, die Sie benötigen.

    
nickhar 04.04.2013 23:10
quelle
4

Warum laden Sie ein Skript nur bedingt ein?

%Vor%

Oder noch besser, führen Sie den Code nur aus, wenn window.innerWidth & gt; 600? Wie auch immer, es gibt viele Lösungen, die Sie verwenden können.

    
Mitch 04.04.2013 23:09
quelle
1

media ist kein gültiges Attribut für <script> , überprüfen Sie hier .

Sie sollten also Medientypen manuell erkennen, anstatt das Skript dynamisch zu laden.

Es gibt ein Plug-in für CSS-Medienerkennung in JavaScript , das Sie verwenden können.

%Vor%     
ocanal 04.04.2013 23:12
quelle