2014-05-24 5 views
0

J'ai cette pièce de javascript pour mon site réactif (Voir ci-dessous). En un mot, je ne veux pas l'afficher (ce qui signifie que je ne veux pas que ce javascript soit exécuté) lorsque la taille de l'écran est inférieure à 480 (téléphone portable). Comment ferais-je cela? J'ai essayé d'utiliser display: aucun pour le div dans lequel il est, mais le script s'exécute toujours et la barre Hello montre toujours. Des idées? Merci.Javascript et Responsive Design

<script type="text/javascript" src="//s3.amazonaws.com/scripts.hellobar.com/511972d9264fc5de88a0b9d919dc42d757a0d2ad.js"></script> 

Voici le site: http://www.thesandiegocriminallawyer.com

Voici le HTML (près du fond):

<div class="hello_bar"> 
<script src="//s3.amazonaws.com/scripts.hellobar.com/511972d9264fc5de88a0b9d919dc42d757a0d2ad.js" type="text/javascript"> 
</div> 
+0

Pas assez de code. Comment «affichez-vous: none» et quand ce code est-il inclus et exécuté? – Popnoodles

+0

Désolé de ne pas être clair. Ce morceau de javascript est placé près du bas de la page. C'est une barre de notification. – user3117275

+0

voir ceci http://www.javascriptkit.com/javatutors/loadjavascriptcss2.shtml –

Répondre

1

Mesurer la largeur de l'écran et seulement fixer le script hellobar si son plus large que 480:

Remplacer:

<script type="text/javascript" src="//s3.amazonaws.com/scripts.hellobar.com/511972d9264fc5de88a0b9d919dc42d757a0d2ad.js"></script> 

Avec:

<script type="text/javascript"> 
    var swidth = (window.innerWidth > 0) ? window.innerWidth : screen.width; 
    if (swidth > 480) { 
     var s = document.createElement("script"); 
     s.type = "text/javascript"; 
     s.src = "//s3.amazonaws.com/scripts.hellobar.com/511972d9264fc5de88a0b9d919dc42d757a0d2ad.js"; 
     document.getElementsByTagName('head')[0].appendChild(s); 
    } 
</script> 

http://jsfiddle.net/xusH3/

+0

Salut, j'ai essayé le code ci-dessus. Cependant, il ne charge plus du tout (même sur le bureau). Une idée pourquoi? – user3117275

+0

Fonctionne pour moi. Voir le jsFiddle. – Moob

+0

Je vois que cela fonctionne dans jsfiddle. Dois-je placer le code ci-dessus dans les balises javascript? (Excusez mon ignorance). – user3117275

0

Il y a 2 solutions que je peux penser:

  1. charge le script dynamique en vérifiant la largeur de l'écran d'abord, puis le chargement du fichier une manière asynchrone si nécessaire.

  2. Enroulez le contenu de votre fichier de script dans une condition qui est basée sur la largeur de l'écran/document (le fichier sera chargé de toute façon, mais ne fonctionnera pas quoi que ce soit si l'écran est inférieure à 480)

la première est meilleure, tandis que le second peut résoudre des maux de tête si vous avez besoin de votre code pour être disponible immédiatement lorsque la page se charge

un échantillon pour le script de chargement de manière asynchrone est:

<script> 
    function loadScript(url){ 
    var js, fjs = document.getElementsByTagName('script')[0]; 
    js = document.createElement('script'); 
    js.src = url; 
    fjs.parentNode.insertBefore(js, fjs); 
    }; 

    if(window.innerWidth>480){ //here you should check for the width (this check is not necessarily cross browser) 
     loadScript("//s3.amazonaws.com/scripts.hellobar.com/511972d9264fc5de88a0b9d919dc42d757a0d2ad.js"); 
    } 
</script> 
+0

Peut-être que je l'exécute mal. Je coupe et colle ceci dans l'étiquette div comme ci-dessus. Maintenant, il ne s'affiche pas sur le site de bureau. Je ne sais pas ce que je fais mal. – user3117275

+0

quel div? Je suppose que vous vouliez dire 'script' tag - s'il vous plaît vérifier votre console pour les erreurs et les coller ici –

+0

@ user3117275 J'ai trouvé le problème ... vous devriez essayer le code édité .. désolé –

Questions connexes