IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Conception Web Discussion :

Directives html ou php pour n'afficher que certains éléments en fonction de la résolution d'écran


Sujet :

Conception Web

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 45
    Points
    45
    Par défaut Directives html ou php pour n'afficher que certains éléments en fonction de la résolution d'écran
    Bonjour à tous

    Sur le site de mon client, on a remarqué que le site rame pas mal sur tablettes et smartphones. Je leur ai dit que c'était "normal", vu qu'il y avait un fichier css de 20Ko en plus à charger, et qui correspond au responsive design mis en place. Mais je sais bien que ce n'est pas 20Ko de plus qui change quoi que se soit.
    Je soupçonne fortement que ce soit les différents scripts des divers réseaux sociaux (linked in, facebook, twitter et google +) qui font ramer le chargement. Donc je voudrai ne pas les charger vu que surtout je ne les affiche pas en mode réduit.

    Quelles directives faut il mettre pour ne pas charger différents éléments en fonction de la résolution d'écran ou bien de la plateforme de lecture du site ?

    Merci d'avance

  2. #2
    Membre expert
    Avatar de Muchos
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    1 700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 700
    Points : 3 849
    Points
    3 849
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Il me semble que la détection de user-agent (en-têtes HTTP, Javascript, etc.) rate souvent.

    En HTML, il existe l'attribut HIDDEN qui, normalement, permet de ne pas charger un élément (contrairement à un NONE en CSS).

    je sais bien que ce n'est pas 20Ko de plus qui change quoi que se soit.
    C'est quand même beaucoup :/

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Je recommande également l'utilisation de l'user-agent pour détecter la plateforme côté serveur (l'user agent en PHP peut se trouver dans la variable globale $_SERVER['HTTP_USER_AGENT'])
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  4. #4
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    Merci à vous 2

    J'ai trouvé cette fonction sur le net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function isMobileBrowser()
    {
     return strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod') || strstr($_SERVER['HTTP_USER_AGENT'],'android');
    }
    Le seul "soucis" que je vois est l'éventuelle compatibilité pour le futur, qui dit que ce sera tjs effectif dans quelques mois ou quelques années ?

  5. #5
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    C'est sûr il est possible que ça change avec le temps (rarement quand même...). Fais toi une fonction très facilement adaptable. Voici par exemple celle que j'utilise (qui détecte déjà beaucoup de terminaux mobiles, pas uniquement apple et android) :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    /**
     * Indique si l'internaute courant est sur une plateforme mobile ou non
     * @return boolean 
     */
    function isMobileBrowser() {
        $mobileBrowser = array(
            'Android',
            'AvantGo',
            'BlackBerry',
            'DoCoMo',
            'Fennec',
            'iPod',
            'iPhone',
            'iPad',
            'J2ME',
            'MIDP',
            'NetFront',
            'Nokia',
            'Opera Mini',
            'Opera Mobi',
            'PalmOS',
            'PalmSource',
            'portalmmm',
            'Plucker',
            'ReqwirelessWeb',
            'SonyEricsson',
            'Symbian',
            'UP\\.Browser',
            'webOS',
            'Windows CE',
            'Windows Phone OS',
            'Xiino'
        );
     
        if (!isset($_SERVER['HTTP_USER_AGENT'])) {
            return false;
        }
        $userAgent = $_SERVER['HTTP_USER_AGENT'];
     
        $pattern = '/' . implode('|', $mobileBrowser) . '/i';
        return (bool) preg_match($pattern, $userAgent);
    }
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  6. #6
    Membre éprouvé Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 561
    Points : 1 105
    Points
    1 105
    Par défaut
    Bonjour,

    Le mieux serait d'utiliser un "service" pour faire cela, par exemple utiliser une librairie (https://github.com/serbanghita/Mobile-Detect/) mais en ayant dans ton code une interface definissant les méthodes de cette librairie que tu utilises réellement (par exemple isMobile et isTablet uniquement).

    D'un point de vue évolution, cette solution a plusieurs intérêts. Grâce à l'interface, tu pourras changer de librairie à ta guise, en faisant simplement une classe pour mapper ta nouvelle librairie avec ton interface. Côté nouveau mobiles / tablettes, il suffit de mettre à jour la librairie regulierement, et pour ce faire je recommande une installation via composer puis composer update de temps à autres.

    Dans tous les cas, ce n'est honnetement pas la meilleure solution, et il existe des solutions pour avoir des images responsives notamment (grâce à srcset et à Modernizr notamment), et ainsi de suite sans detecter le navigateur. Je recommanderais ce genre de solutions. Par ailleurs, les lags sur mobile viennent généralement du javascript, donc il faut peut être voir quelle est la quantité de js dans la page, leur optimisation, le nombre de listeners...

  7. #7
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Par ailleurs, les lags sur mobile viennent généralement du javascript, donc il faut peut être voir quelle est la quantité de js dans la page, leur optimisation, le nombre de listeners...
    Le meilleur moyen de ne pas encombrer le navigateur web sur mobile avec des fichiers js qui ne le concerne pas (parce que la visualisation sur mobile à des fonctionnalités en moins par rapport à la version desktop par exemple) reste de le ne pas les afficher dans le code html rendu tout simplement. Plus on coupe haut dans la suite logique rendu de la page web, meilleures sont les performances.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  8. #8
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Spartacusply Voir le message
    Le meilleur moyen de ne pas encombrer le navigateur web sur mobile avec des fichiers js qui ne le concerne pas (parce que la visualisation sur mobile à des fonctionnalités en moins par rapport à la version desktop par exemple) reste de le ne pas les afficher dans le code html rendu tout simplement. Plus on coupe haut dans la suite logique rendu de la page web, meilleures sont les performances.

    Oui c'est que je me dis aussi, c'est pour ça que je veux rajouter la directive pour ne pas les charger si on est sur mobile ou tablette. Donc je vais utiliser ta fonction merci
    Le seul petit défaut que je vois, est que les résolutions de plus de 1000px de largeur vont ou sont déjà arrivées sur tablette, donc ce serait dommage de ne pas afficher ces scripts sociaux non ?

  9. #9
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Le seul petit défaut que je vois, est que les résolutions de plus de 1000px de largeur vont ou sont déjà arrivées sur tablette, donc ce serait dommage de ne pas afficher ces scripts sociaux non ?
    Ca dépend de ce que tu souhaites. Dans ce cas là je te conseille d'utiliser la librairie proposée par Théocrite (qui n'est rien que ma fonction mais en beaucoup plus balèze pour pouvoir détecter très précisément de quel type de terminal mobile s'agit-il et avec un risque d'erreur négligeable).
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  10. #10
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juillet 2008
    Messages : 101
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Spartacusply Voir le message
    Ca dépend de ce que tu souhaites. Dans ce cas là je te conseille d'utiliser la librairie proposée par Théocrite (qui n'est rien que ma fonction mais en beaucoup plus balèze pour pouvoir détecter très précisément de quel type de terminal mobile s'agit-il et avec un risque d'erreur négligeable).
    Non je cherche + simple que ça, si les liens réseaux sociaux ne s'affichent pas sur tablette même avec une tablette ayant une résolution supérieure à 1000px de large, ce n'est pas bien grave après tout.
    Merci à toi, je vais utiliser ta fonction bien pratique

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Si tu veux connaître les dimensions utiles il va falloir passer par du javascript...

    Mais il me semble qu'il y a des problèmes différents.
    Les problèmes de lenteur sont souvent dus à la connexion (médiocre) wifi des portables. Evidemment limiter les requêtes externes peut soulager l'affichage et donc ton idée de supprimer les liens vers les réseaux sociaux est tout à fait justifiée. Mais dans ce cas de figure cela ne sert pas à grand chose de connaître les dimensions du périphérique d'affichage. Quand bien même la tablette ferait 1000px de large, tant qu'elle est connectée par l'intermédiaire d'une connexion médiocre, elle aura les mêmes problèmes. Dans l'absolu c'est la qualité de la connexion qu'il faudrait tester.
    Enfin dans ton cas si c'est pour supprimer des liens vers les réseaux sociaux, je dirais que tu peux le faire assez facilement d'autant que cela n'est réellement un plus que pour certains types de contenus.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] PHP/SQL n'afficher que les champs vides
    Par rouly dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 03/02/2010, 05h47
  2. HTML ou PHP pour indexer ?
    Par jlb59 dans le forum Référencement
    Réponses: 4
    Dernier message: 26/11/2008, 07h04
  3. Réponses: 5
    Dernier message: 07/10/2008, 11h25
  4. Réponses: 4
    Dernier message: 05/12/2006, 20h13
  5. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 19h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo