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

JavaScript Discussion :

Comment isoler une partie de son code


Sujet :

JavaScript

  1. #1
    Membre du Club Avatar de raydenprod
    Homme Profil pro
    Frontend Developer
    Inscrit en
    Février 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Frontend Developer

    Informations forums :
    Inscription : Février 2013
    Messages : 38
    Points : 48
    Points
    48
    Par défaut Comment isoler une partie de son code
    Bonjour,

    Ma question est relativement simple :
    J'aimerai savoir si il est possible (si oui, quelle est la meilleure façon de faire) dans une page html d'isoler une partie du code (par exemple un div) et dire que dans ce div, tous les js du site ne sont pas pris en compte.
    exemple :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <html>
    <head>
     
    </head>
    <body>
    <div id="a"></div>
    <div id="b"></div>
     
    <script src="jquery"></script>
    <script src="monscript"></script>
    </body>
    </html>
    dans cette page html je souhaite que le JS soit pris en compte dans le div a mais pas dans le div b.

    Quelle est la meilleure façon de faire ? une closure ?

    Merci d'avance,

    Cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Non cela est impossible avec cette méthode ...
    un js est global à la page ...

    ensuite il s'agit juste d'utiliser les bons sélecteurs pour cibler les bons éléments
    Tout dépend de ce que font tes scripts ...

    Mais manifestement tu ne peux pas limiter un script à une zone de la page autrement qu'en pointant dans le script sur des éléments en particulier et leurs évènements
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Ou alors utiliser une iframe. Mais pas sûr que ce soit ce que tu veuilles. Comme l'a dit SpaceFrog ce serait plutôt le script qui est à revoir.
    One Web to rule them all

  4. #4
    Membre du Club Avatar de raydenprod
    Homme Profil pro
    Frontend Developer
    Inscrit en
    Février 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Frontend Developer

    Informations forums :
    Inscription : Février 2013
    Messages : 38
    Points : 48
    Points
    48
    Par défaut
    Merci pour vos réponses.

    Je vais essayer avec des appels des parties de pages concernées en ajax.

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Je pense que mettre le js dans le body est une mauvaise pratique

    pour moi tous les js devrait être dans les headers

    et donc la question ne se pose plus.

    A+JYT

  6. #6
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    Je pense que mettre le js dans le body est une mauvaise pratique
    pour moi tous les js devrait être dans les headers
    Je dirais Oui et Non...
    Tout dépend du poids des fichiers et du temps de chargement.
    Mettre des fichiers JS "non vitaux" et assez lourds dans le head est une mauvaise pratique.

    Le mieux est de privilégier (dans <head>) les fichiers "vitaux" et déclarer les autres dans le body ou mieux, utiliser une librairie de lazyLoading.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par slim Voir le message
    Je dirais Oui et Non...
    Tout dépend du poids des fichiers et du temps de chargement.
    Mettre des fichiers JS "non vitaux" et assez lourds dans le head est une mauvaise pratique.

    Le mieux est de privilégier (dans <head>) les fichiers "vitaux" et déclarer les autres dans le body ou mieux, utiliser une librairie de lazyLoading.
    Que tu mette un fichier lourd dans le header ou dans la page ne change rien. donc je pense qu'il vaut mieux le mettre dans le header.
    Si tu peux t'en passer alors tu ne le mets pas. (et tu le charge à la volée en cas de besoin.)

    Dans les deux cas tu ne le mets pas dans le body et dans les deux cas au chargement de ta page tous les js sont dans le header.

    Je pense donc que le mettre dans le body n'est pas une bon pratique.

    A+JYT

  8. #8
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    Que tu mette un fichier lourd dans le header ou dans la page ne change rien.
    Citation Envoyé par w3schools
    It is a good idea to place scripts at the bottom of the <body> element.
    This can improve page load, because HTML display is not blocked by scripts loading.
    http://www.w3schools.com/js/js_whereto.asp
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    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 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    Je pense donc que le mettre dans le body n'est pas une bon pratique.
    A+JYT
    En théorie le js a mieux sa place dans le header. Mais ce n'est pas ce que google encourage à faire pour optimiser la vitesse de téléchargement des pages sur les mobiles...

  10. #10
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    je maintiens

    Si tu mets ton script en pied de body ton document reste ouvert
    alors que si tu mets un script dans le header qui contient sur le onLoad ou tout autre événement un chargement dynamique.
    ton document est clos dès la fin de son chargement.

    Pour mémoire le moteur HTML clos le document lors que la balise </html> est interprétée.
    tant que cela n'est pas fait tout élément présent : tag html ou script est susceptible de modifier le document d'origine.
    lorsque le document est clos le moteur peux relâcher toutes ces contraintes et assurer une manipulation optimal du DOM.
    à partir de là le document d'origine et figé seul le DOM peut évoluer. il n'est plus nécessaire pour le moteur de maintenir la cohérence des deux.
    bien sur un simple document.write et le document doit être réouvert (ce qui est extrêmement couteux)
    mais là encore document.vrite est pour moi interdit.

    c'est pour ces raison là que Google préconise de mettre SON code de PUB en fin de body.
    ainsi il se charge après les infos de la page et peut utiliser le document.write pour modifier le document avant sa fermeture.

    A+JYT

  11. #11
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Un script dans le <head> peut aussi contenir une instruction comme document.write, donc tant que le script n'a pas été chargé et exécuté, le parser HTML (ou le moteur de rendu selon les navigateurs) est bloqué. Pour que l'utilisateur visualise le plus rapidement possible le contenu HTML de la page, il faut donc éviter de mettre des scripts trop lourds dans le <head>. C'est pour ça que Google recommande de les mettre en fin de <body>, car les navigateurs modernes n'attendent plus que le document soit fermé pour commencer à dessiner le contenu.

    Le fait de les placer dans le <body> est une recommandation assez ancienne (~10 ans). Aujourd'hui on a trouvé mieux: les attributs async et defer sur les balises script. La recommandation actuelle est donc de mettre ses scripts dans le <head>, avec l'attribut async si l'ordre d'exécution n'importe pas, et defer si l'ordre d'exécution doit respecter l'ordre de déclaration (pour les bibliothèques par exemple)

    Il va falloir que je mettre à jour la FAQ à ce sujet: http://javascript.developpez.com/faq...positionScript
    One Web to rule them all

  12. #12
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 720
    Points : 1 607
    Points
    1 607
    Par défaut
    et les scripts comme par exemple jQuery qui sont mis en src dans le head il sont lu, executé a quelle moment ?
    Plus vite encore plus vite toujours plus vite.

  13. #13
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    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 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Les scripts sont lus dans l'ordre où tu les mets dans ton code, excepté s'ils possèdent les attributs defer ou async évoqués plus haut.

    Sinon pour jquery tu pourrais mettre aussi son chargement en bas du body pour peu que les scripts qui l'utilise se situent en dessous.

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/04/2010, 18h14
  2. Réponses: 2
    Dernier message: 28/04/2009, 10h43
  3. Réponses: 3
    Dernier message: 31/10/2006, 12h20
  4. Comment lire une partie du son *.wav
    Par ryosaebafr2000 dans le forum MFC
    Réponses: 5
    Dernier message: 08/06/2005, 16h00
  5. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

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