Appelez le fichier JS externe fondée sur “l'écran” de la valeur
Je vais essayer cela, mais il ne fonctionne pas:
<html>
<head>
<script src="js/menu-collapser.js" type="text/javascript" media="media screen and (max-width: 599px)"></script>
</head>
...
</html>
//menu-collapser.js :
jQuery(document).ready(function($){
$('.main-navigation li ul').hide();
$('.main-navigation li').has('ul').click(function() {
$(this).children().toggle();
});
});
Avez-vous une idée sur comment faire de la bonne façon? Le script fonctionne si elle est utilisée directement dans l'en-tête avec les balises.
OriginalL'auteur Mark | 2013-04-04
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas le faire directement à l'aide de Javascript
<script>
balises. Les Media queries sont utilisés dans les fichiers CSS ou CSS styles. Un exemple de base:Ou directement dans vos feuilles de style:
Toutefois, vous pouvez utiliser un élément externe chargeur/requête de média de la bibliothèque pour ce faire (require.js, modernizr.js, enquire.js et autres), Dans ce cas, je suis un exemple d'utilisation de enquire.js, je pense que c'est très efficace et ne nécessite pas de jQuery par défaut:
Exemple complet
1) Comprennent enquire.js (disponible ici):
2) Créer une fonction de charge - pour charger des fichiers JS:
3) Feu enquire.js et écouter les requêtes de média changements (à la fois sur la charge et sur-redimensionner):
Mettre tous ensemble
À l'aide d'une simple page HTML avec enquire.js chargé à partir d'un fichier externe:
Outre le chargement de JS fichiers, vous pouvez créer un CSS chargeur de trop, qui fonctionnerait de la même façon (sous certaines conditions), mais cela va à l'encontre de l'objet de l'aide
@media
en CSS. Il est intéressant de lire les explications d'utilisation pour enquire.js, comme il peut faire beaucoup plus que ce que j'ai illustré ici.Mise en garde: Rien au-dessus utilise jQuery, mais vous pouvez prendre avantage de certaines des fonctions qu'il offre; le chargement des scripts par exemple - ou de l'exécution d'autres fonctions que vous avez besoin.
Je vais mettre à jour ma réponse avec un exemple précis.
De réponses mis à jour avec un meilleur exemple.
vous êtes incroyable, merci pour votre aide. malheureusement je ne peux pas le faire fonctionner! 🙁 si vous êtes assez aimable pour prendre un coup d'oeil à mon code, j'ai simplifié et collé ici: pastebin.com/HkviLP9H
Il ne semble pas quelque chose de mal avec votre code, Il fonctionne dans Chrome, Safari mais ce n'
menu-collapser.js
faire!?OriginalL'auteur nickhar
Pourquoi ne pas les charger dans un script conditionnel?
Ou, mieux encore, seulement exécuter le code si la fenêtre.innerWidth > 600 ? De toute façon, il y a beaucoup de solutions que vous pouvez utiliser.
OriginalL'auteur Mitch
media
n'est pas un attribut valide pour<script>
, vérifier ici.De sorte que vous devrait détecter les types de médias manuellement que de charger le script de façon dynamique.
Il y a un plug-in pour css détection de médias en javascript, vous pouvez l'utiliser.
OriginalL'auteur ocanal