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] DOM : createElement d'une balise script dans le HEAD


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut [DOM] DOM : createElement d'une balise script dans le HEAD
    je souhaite ajouter à une page les balises script dans la page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var headTag = newWindow.document.getElementsByTagName("head")[0];
     
    var newScript = document.createElement('script');
    newScript.setAttribute('type', 'text/javascript');
    newScript.setAttribute('src', "test.js");
    headTag.appendChild(newScript);
    Le problème est que la balise n'est pas fermé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script type="text/javascript" src="test.js">
    Avez vous une idée ? merci d'avance

  2. #2
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Ca a peut-être quelque chose a voir avec la DTD...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut
    en fait je fais un window.open pour avoir une page vide et après je crée des éléments dans cette page.

    En quoi la DTD joue un rôle ?
    je ne comprends pas

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par défaut
    Si tu utilise un doctype HTML, c'est normal. HTML autorise les balises non fermée (comme <br> ou <hr>).
    Si tu tiens a avoir une balise script fermé, bascule en xHTML.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut
    en fait, j'ouvre une fenêtre vide.

    Code : 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
     
    var properties="width=400,height=400,top=110,left=100,screenY=50,screenX=100,resizable=yes,scrollbars=yes,location=no"; 
    var newWindow = window.open("", "", "" + properties); 
     
    var htmlTag = newWindow.document.getElementsByTagName("html")[0];
    var bodyTag = newWindow.document.createElement('body');
    htmlTag.appendChild(bodyTag);
     
    var divPopup = newWindow.document.createElement('divPopup');
    divPopup.setAttribute('id', divName);
     
    var divParent = document.getElementById(divName + "_divParent");
    divPopup.appendChild(divParent);
    bodyTag.appendChild(divPopup);
     
    var newScript = newWindow.document.createElement('script');
    newScript.setAttribute('type',"text/javascript");
    newScript.setAttribute('src',"test.js");
    divPopup.appendChild(newScript);
    est ce que c'est bon de faire ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var htmlTag = newWindow.document.getElementsByTagName("html")[0];
    var bodyTag = newWindow.document.createElement('body');
    htmlTag.appendChild(bodyTag);
    dans ma nouvelle fenêtre, je n'ai pas accès à mes fonctions javascript de test.js.

    Comment je peux définir le DOCTYPE de ma popup ?

    merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut
    si j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var newWindow = window.open("test.html", "", "" + properties);
    et que test.html est vide alors ça marche.

    Donc je dois essayer de lui dire que je veux ouvrir du html.

    Qqn a une idée ?

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    comment ça pas fermé dans le dom il n'y a pas de balise elle ne peuve donc pas être ouvert ou fermé

    installe le debuggeur js de ff ou utilise celui de microsoft
    tu véra que dans le dom il n'y a pas de balise

    mais tu pouras généré le code de ton dom et là il te produira un source HTML
    mais tant que tu en reste au DOM pas de balise

    il te faut savoir que le script que tu insère de cette façon n'est pas exécuté avant la fin du cycle d'évènement.

    bref si tu sur un onclick tu charge un cript comme tu viet de le faire et qu'ensuite tu fait alert(mavar) ou mavar est définie dans le script ça ne parchera pas car l'interprétation du script chargé se fera après le alert

    A+JYT

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Par défaut
    j'ai firebug et lorsque je parcours le HTML je n'arrive pas à ouvrir le script en cliquant sur la croix (expand).
    je n'ai pas tout compris sur le cycle javascript mais pourquoi ça marche en spécifiant un fichier html vide et que ça plante si je ne précise pas de page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var newWindow = window.open("test.html", "", "" + properties); //ça marche
    vs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var newWindow = window.open("", "", "" + properties); //ça ne marche pas

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    parce que dans un cas tu as un document dans ton window et dans l'autre tu n'a rien
    ton navigateur lorsqu'il ouvre un fichier il considère par défaut que c'est du HTML sauf s'il à une information contraire (mime/type)
    la première chose qu'il fait alors c'est de créer l'élément document. il interprète ensuite le code html rencontré dans le dit document. mais comme tout le monde n'écrit pas du HTML parfait il va tenter d'ajouter les élément strictement nécessaires il va donc créer les noeud HTML HEAD BODY si ces derniers sont absents ou mal placés.
    donc un fichier vide sera interprété comme une page HTML mal écrite
    alors que rien ce n'est rien donc il ne fait rien.

    A+JYT

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

Discussions similaires

  1. Balise script dans le head de la page html
    Par binouzzz19 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 08/07/2010, 09h30
  2. une balise object dans un head
    Par brolyvb dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/07/2008, 15h10
  3. [DOM] Une balise script en DOM !
    Par polothentik dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 30/06/2008, 11h08
  4. Réponses: 2
    Dernier message: 07/03/2007, 15h18
  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