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 :

DOM et balise script appelante


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut DOM et balise script appelante
    Hello world,

    Existe-t-il un moyen de récupérer le noeud DOM correspondant à la balise script contenant le code sans connaître ni son identifiant, ni son index dans getElementsByTagName ?
    Ça me permettrait de rendre l'utilisation d'un script plus confortable.

    Merci.

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    en fait, j'ai eu pas mal de bugs avec ça;
    tu peux toujours essayer la norme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName["script"][0];
    pour désigner la balise;

    mais après, va gérer le contenu! sachant que c'est tout sauf du html
    du coup "le noeud DOM" correspondant au script, c'est de la S-F;

    et même avec un id, j'avais du mal à faire réagir le script;

    du coup, j'avais placé le script lui-même dans un div;

    mais je ne sais pas trop ce que tu veux faire...

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    document.getElementsByTagName('script')[0] renvoie la première balise script de la page. Pas celle en cours d'exécution.

    C'est surtout la position du script dans la page qui m'intéresse.
    En modifier dynamiquement le contenu, je ne m'y aventurerais même pas !

    Je voudrais pouvoir parcourir l'arbre DOM à partir de cette position (via parentNode et cie) et que le script puisse donc réagir différemment en fonction de l'endroit où il est placé.

    J'ai bien l'impression que pour ça l'id est incontournable... mais comme le script peut être appelé plusieurs fois dans la même page, ça oblige à utiliser des id différents qu'il faut alors communiquer au serveur à chaque appel...
    Rien de bien méchant, mais j'aurais préféré m'en dispenser...

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    PS : Je n'ai pas la main sur la page qui appelle le script. C'est pour ça que le confort d'utilisation est important. Pour ça aussi que le script est contenu dans le body et non dans le head... pour ça que c'est chiant, en gros

  5. #5
    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 643
    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 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    il semblerait qu'a l'intérieur d'un balise script this soit la window ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script>
    liste=''
    for (elt in this){
      liste+= elt + '=>\t'+this[elt]+'\n'
      }
    alert (liste  )
    </script>

  6. #6
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    ben this est toujours window par défaut... et ça avance à quoi?

    en tout cas, Anticorps, je n'ai pas encore saisi quel était ton objectif, ni ton code de référence ...

  7. #7
    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 643
    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 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='button' onclick="alert(this.value)" value ="non je ne suis pas la window" />
    ben ça avance à dire que ça va etre difficile de chopper la balise script active ...

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Dans l'immédiat, il s'agit juste d'ajouter à l'endroit où le script est appelé un div contenant des données récupérées sur mon serveur. C'est un widget bête et méchant.

    En ce moment, je me sers d'un appel de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script id="myId" src="http://myScript?targetId=myId&parametresFoireux=true"><script>
    Mais il m'intéresserais aussi de pouvoir modifier / ajouter des événements à une table juste en rajoutant une balise script après, soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <table>...</table>
    <script id="myId" src="myTrucFoireux?targetId=myId"><script>
    Ou ce genre de choses facilement intégrables.

    Ça marche très bien en l'état mais l'id est plutôt chiant à gérer et, avec un blog ou un CMS par exemple, on risque toujours de se retrouver avec des doublons sur certaines pages (archives, etc).

  9. #9
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    tiens tiens... il semblerait bien que tu veuilles te passer d'Ajax, et que tu aires besoin d'une balise de script fantôme;


    me trompe-je?


  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je ne sais pas ce qu'est une balise script fantôme. Je jette un oeil là-dessus de suite.
    Je veux me passer d'AJAX pour épargner à l'utilisateur d'avoir à charger une librairie.
    L'utilisation est on ne peut plus simple, tu rajoute ta ligne de code et ça fonctionne.
    Le script est généré dynamiquement par PHP et ne contient plus que les instructions DOM pour construire le div.
    Et c'est aussi on ne peut plus simple pour moi de modifier l'ergonomie du machin ou les données qu'il contient.
    Confiance réciproque nécessaire. Mais acquise pour ce que je veux en faire.

  11. #11
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <script src="http://myScript?targetId=myId&parametresFoireux=true" onload="alert(this.nodeName+','+this.src)"></script>
    //> SCRIPT, http://myScript?targetId=myId&parametresFoireux=true
    sur l'évènement onload, tu aura accès à cette balise "script"
    mais en tout cas je sais toujours pas ce que tu veux faire par là, c'est trop ambigüe

  12. #12
    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 643
    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 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Ceci étant juste pour recentrer le débat sur les fondamentaux, la base du problème est plutot au niveau d'un erreur de developpement de départ.
    il suffit de mettre des variables dans les différentes fonction ou comme le propose Gatsu dans le onload des balises script pour faire office de tracker, ou utiliser les callers.
    Toute autre tentative que je qualifierai de crossdomain ne me semble pas legitime.

  13. #13
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    de toute façon, le "je n'ai pas la main sur la page qui appelle le script" nous rend incapables de t'aider;

Discussions similaires

  1. [DOM] onClick sur balise Script
    Par electro38 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 01/07/2008, 08h31
  2. [DOM] Une balise script en DOM !
    Par polothentik dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 30/06/2008, 11h08
  3. [DOM] Pb pour insérer la balise script.
    Par cassy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/05/2007, 14h39
  4. [DOM] DOM : createElement d'une balise script dans le HEAD
    Par Mike_69 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/04/2007, 14h31
  5. [DOM] Comment supprimer une balise <script> ?
    Par cassy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/10/2006, 11h24

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