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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 extrêmement actif
    Avatar de Muchos
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ardennes (Champagne Ardenne)

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

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 704
    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

    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
    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'])

  4. #4
    Membre confirmé
    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
    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

    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
    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);
    }

  6. #6
    Membre émérite Avatar de tdutrion
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2009
    Messages
    561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    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
    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

    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
    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.

+ 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