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 :

Chargement d'un plugin et récupération innerHTML


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 26
    Points : 15
    Points
    15
    Par défaut Chargement d'un plugin et récupération innerHTML
    Bonjour,
    Voici mon problème:
    je suis en train de faire un plugin qui est censé rendre tous les numéros de téléphones présents sur la page web cliquables. Cependant mon extension contient des pages html et quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var htmlString = document.getElementsByTagName('body')[0].innerHTML;
    j'obtiens le code de la page du plugin et non celui de la page web, donc ma question est comment faire la différence entre la page html de mon extension et celle du navigateur?

    Merci d'avance pour vos réponses.

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 580
    Points
    580
    Par défaut
    Bonjour,

    Vous avez écrit :
    Cependant mon extension contient des pages html
    Comment insérez-vous votre extension dans la page html? A quoi ressemble cette extension?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Bonjour,
    Comment insérez-vous votre extension dans la page html? A quoi ressemble cette extension?
    Quand je parle d'extension, je veux dire que je suis en train de faire une extension que l'on peut ajouter à Google Chrome comme celles que l'on peut télécharger dans le web store. Donc les pages html font parties de l'extension.

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Citation Envoyé par hublot78 Voir le message
    quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var htmlString = document.getElementsByTagName('body')[0].innerHTML;
    j'obtiens le code de la page du plugin et non celui de la page web
    Pour qu’un script de ton extension ait accès aux pages web visitées, tu dois le déclarer en tant que content script. Exemple, dans ton manifest.json :
    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    "content_scripts": [
      {
        "matches": [ "http://*/*", "https://*/*" ],
        "js": [ "script-de-contenu.js" ]
      }
    ]
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Bonjour,
    C'est déjà fait, j'ai essayé de changer l'ordre dans lequel j'appel mais fichiers mais cela ne résout pas mon problème initial.
    J'ai essayé de stocker les informations que je voulais communiquer dans le localStorage mais même là je n'arrive pas à récupérer les informations stockées.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Pour plus de détails: je dois pouvoir cliquer sur un numéro de téléphone sur une page web quelconque, ensuite je dois récupérer le numéro de téléphone dans mon extension Chrome pour ensuite passer l'appel. C'est donc cette récupération de donnée qui me pose problème.
    J'ai essayé d'utiliser le localStorage mais la page web et l'extension ne communiquent pas.

    Merci d'avance pour vos réponses.

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Chez moi ça marche.
    manifest.json
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
      "manifest_version": 2,
      "name": "phonenums",
      "version": "1.0",
     
      "content_scripts": [
        {
          "matches": [ "*://localhost/*" ],
          "js": [ "content.js" ]
        }
      ]
    }
    content.js
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    console.log(document.body.innerHTML);
    document.body.insertAdjacentHTML("afterbegin",
      '<p style="color: red">Contenu injecté par l’extension</p>');
    Si tu veux utiliser le stockage, là on part sur autre chose. Tu vas d’abord devoir en demander la permission en ajoutant une clé dans le manifest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      "permissions": [ "storage" ],
    Ensuite, dans ton content script, tu peux utiliser browser.storage.local. Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    browser.storage.local.set({ "machin": "truc" })
      .then(() => console.log("storage set successful"));
     
    browser.storage.local.get("machin")
      .then((data) => console.log("storage get:", data);
    Les données seront stockées dans un espace dédié à l’extension, seront accessibles de tous les domaines web, et persisteront jusqu’à la désinstallation de l’extension. Voir WebExtensions/API/storage.

    Note : je développe avec Firefox (à l’aide de l’outil web-ext) car c’est beaucoup plus pratique ; l’API chrome a des années de retard (cf. ce bug qui date de 2013) et, notamment, ne supporte pas les promesses. Si tu veux développer pour Chrome, tu devras faire une petite adaptation de syntaxe. Ce n’est pas très compliqué, mais je n’ai pas envie de t’aider pour ça.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Bonjour,
    Merci de ta réponse ça marche comme tu me l'as montré.
    Merci

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Maintenant le problème c'est que l'extension ne s'applique pas sur tous les onglets du navigateur, il faut chaque fois refaire la démarche de connexion pour pouvoir rendre les liens cliquables, donc ma question est: comment faire pour que l’extension s'applique sur tous les onglets du navigateur.
    Merci d'avance pour vos réponses.

  10. #10
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Je ne comprends pas où est le problème. D’après mes tests, le script de contenu est automatiquement injecté (ou réinjecté) dans toutes les pages correspondant au match pattern indiqué dans le manifest, et ce dans deux situations :
    • l’extensions est installée (ou, en phase de développement, rechargée) ;
    • la page est chargée ou actualisée.


    C’est d’ailleurs un problème selon moi que le script puisse s’exécuter plusieurs fois sur une même instance de page, car tu risques de te retrouver avec des numéros de téléphone transformés plusieurs fois.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Je viens de me rendre compte du problème: je n'avais pas mis le bon fichier à charger dans le content scripts.

    Merci de ton aide.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/05/2012, 18h15
  2. [1.x] Problème avec getPresentationFor depuis un plugin
    Par Black Templar dans le forum Symfony
    Réponses: 8
    Dernier message: 26/01/2012, 13h56
  3. Problème avec chargement des animations
    Par PomDesign dans le forum Flash
    Réponses: 2
    Dernier message: 02/04/2007, 16h52
  4. problème de chargement de classe (plugin)
    Par nixonne dans le forum Général Java
    Réponses: 8
    Dernier message: 17/08/2006, 15h54

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