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 :

Extraction valeurs code source avec contrainte


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Points : 79
    Points
    79
    Par défaut Extraction valeurs code source avec contrainte
    Bonjour,
    Je suis confronté à un soucis lors de l'extraction d'une valeur contenue dans la balise <script> d'un code source.

    Le soucis n'est pas lié à la valeur en elle même mais à une pub, et lorsque Adblock est activé, l'extraction se fait correctement comme le but est de pas pénaliser l'auteur du site je souhaite que ça fonctionne avec Adblock désactivé.

    Après plusieurs recherches je me suis aperçu, quand Adblock est désactivé, qu'il y a 2 fichiers avec le même nom et bien sur je "tape" sur le mauvais.



    Le fichier avec l'icône grise contient le code source celui en jaune contient quelque chose en rapport avec la pub qui s'affiche sur la page web.

    Avec ce bout de code

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [...]
    try {
        let textContent = document.scripts[1].textContent;
        console.log(textContent);
        let scale = /var scale = ([0-9]{1,3})/.exec(textContent)[1];
        console.log(scale);
    [...]

    textContent est vide puisqu'il "tape" sur le fichier avec l'icône jaune, mais me retourne la valeur de scale quand il "tape" sur le fichier avec l'icône grise.

    Pour palier à ça, j'aimerais mettre en place un "if (textContent === "") {...};" après "let textContent = ..." qui testerait si textContent est vide ou s'il trouve ses infos.
    Mais je sais pas comment lui dire que s'il trouve rien, il faut qu'il aille chercher ça dans l'autre fichier (qui possède exactement le même nom)

    Vous pourriez m'indiquer la méthode ?

    Merci

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    De ce que je vois tu pourrais faire une boucle sur document.scripts.


    Comme j'ai la flemme de faire du js je mets du pseudo code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    n = nombre de poste dans le tableau document.scripts
    
    i = 0
    tant que i <n
      let textContent = document.scripts[i].textContent;
      tu testes si textContent va bien
      
      si oui alors tu fais ce que tu as à faire puis i = n comme ça tu sors.
    
      i = i + 1
    refaire
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Points : 79
    Points
    79
    Par défaut
    Bonjour badaze,
    Cool compris, j'avais pas pensé à une boucle, j'vais tester ça
    Merci

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Points : 79
    Points
    79
    Par défaut
    Le code est faux mais est ce que c'est dans ce sens là qu'il faut chercher ?

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        var scale;
        for (var i in document.scripts) {
            let textContent =  document.scripts[i].textContent;
            if (textContent !== "" ) {
                break;
            }
            scale = /var scale = ([0-9]+)/.exec(textContent)[1];
        };

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    La boucle for va mettre dans i non pas une valeur numérique mais un « objet » de la collection scripts.

    De ce que j’ai pu voir sur le site zezo.org le fichier chart.pl qui contient le source de la page contient des éléments que ne contient pas le second. Par exemple il y a le doctype, les balises html normales alors que l’autre fichier n’a pas tout ça.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Points : 79
    Points
    79
    Par défaut
    La différence des 2 fichiers, ça je l'avais vu.
    Un, gris, est de l'HTML , l'autre, jaune, est du JS.

    Faut que je revoie mon histoire de boucle alors ...

  7. #7
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    textContent restera vide et c'est heureux !

    On ne peut récupérer que "src", "type" ou "outerHTML".

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Points : 79
    Points
    79
    Par défaut
    Bonjour danielhagnoul,
    Tu peux developper stp parce que là tu m'as perdu ...

  9. #9
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Je pensais que cela était impossible pour raison de sécurité, mais je me trompais dans le cas d'un script inclus dans la page HTML. Une raison de plus pour ne jamais mélanger JS et HTML.

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script defer>
        const kTest = "C'est un test !";
    </script>

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    const mesScripts = Array.from(document.querySelectorAll('script'));
     
    for (const unScript of mesScripts) {
        console.log('src = ', unScript['src']);
        console.log('type = ', unScript['type']);
        console.log('outerHTML = ', unScript['outerHTML']);
        console.log('text = ', unScript['text']);
        console.log('textContent = ',  unScript['textContent']);
        console.log(`*******`);
    }

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Points : 79
    Points
    79
    Par défaut
    J'obtiens ce que je souhaite avec ceci :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    let scale;
    for (const script of document.scripts) {
    if(script.textContent.includes("var scale")){
    scale = /var scale = ([0-9]{1,3})/.exec(script.textContent)[1];
    break;
    }
    }

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/02/2011, 08h48
  2. Générer la documentation de code source avec VS 2008
    Par kaiko dans le forum Visual Studio
    Réponses: 1
    Dernier message: 25/11/2010, 15h54
  3. code source avec les graphes en C
    Par bouzidimehdi dans le forum C
    Réponses: 2
    Dernier message: 05/01/2010, 20h38
  4. Incompréhension d'un code source avec awk
    Par adilos708 dans le forum Linux
    Réponses: 1
    Dernier message: 20/04/2006, 20h10

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