11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
je cherche à lire et à écrire dans un popup appelé via la méthode open() de l'objet window. La méthode write() existe pour écrire mais je vais avoir besoin de modifier le contenu de cette fenetre. J'ai pour habitude d'utiliser la méthode appendChild du DOM mais il se trouve que celle ci ne soit pas possible dans ce cas ou alors m'y suis-je mal pris ? Voici ce que j'ai écris :
newFile: function(e) {
  frame = window.open("","newFile","location=0,status=0,scrollbars=0,resizable=1,width=300,height=400");
    html = frame.document.createElement('html');
      head = frame.document.createElement('head');
        title = frame.document.createElement('title');
        title.innerHTML = 'Upload form';
      head.appendChild(title);
    html.appendChild(head);
      body = frame.document.createElement('body');
        form = frame.document.createElement('form');
          p = frame.document.createElement('p');
            input = frame.document.createElement('input');
            input.type = 'file';
            input.name = 'f';
          p.appendChild(input);
            input = frame.document.createElement('input');
            input.type = 'submit';
          p.appendChild(input);
        form.appendChild(p);
      body.appendChild(form);
    html.appendChild(body);
  [b]frame.document.appendChild(html);[/b]
  frame.document.close(); 
  frame.focus();
}

Notez que j'utilise frame.document.createElement mais que j'ai également essayez avec document.createElement. Ce code génère une exception dans la hiérarchie du DOM (eg:"Node cannot be inserted at the specified point in the hierarchy"). Cette erreure se déclanche à la ligne mise en gras dans le code ci-dessus.

Je peux utiliser la méthode write() pour ecrire dans ce popup mais me sera-t-il possible alors de modifier le contenu de la fenetre ainsi generée ? Et comment ?

Merci de vos conseils...
salut

je n'ai pas lu tout le code, mais je me demande si tu ne te heurtes pas au problème du "popup pas encore chargé"... qui fait que le dom n'est peut-être pas accessible au moment où tu le sollicites;

j'ai pour habitude de ne jamais utiliser open() sur une page vierge: l'idée est de construire ta propre page fille, y compris l'appel javascript des fonctions voulues; en appelant cette page, tu maîtrises à 100% le terrain d'atterrissage;
bonsoir,

en ce qui concerne le chargement de la page, ce n'est pas un probleme car je peux remplacer ici frame.document.appendChild(html) par frame.document.write(html.innerHTML) - Méthode qui est qui plus est viable quoique peut élégante...

Pour ce qui est de charger une page fille, il s'agit en effet d'une solution auquel je vais penser.

Merci de cette idée.