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 :

Copier un élément existant


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 843
    Points
    4 843
    Par défaut Copier un élément existant
    Bonjour,

    Je voudrais copier le contenu d'un élément précis d'une page source vers un page cible.

    Pour celà, j'ai tenté de récupérer le contenu du noeud par "nodeValue", mais apparement ça ne fonctionne que s'il n'y a pas d'autre balises dans l'élément...

    Je sens que je ne suis pas clair, alors voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Page source : 
    <div ID="el1" onClick="ouvrirNouvellePage('el1')">
      <div class="contenu">
        <ul><li>Liste à copier</li></ul>
      </div>
    </div>
     
    <div ID="el2" ...>...</div>
     
    Page cible :
    <div class="contenu">
      <ul><li>Liste à copier</li></ul>
    </div>
    Je dois de plus pouvoir appliquer cette fonction à chacun des éléments (el1, el2, ...).

    Je ne vois plus vraiment quoi essayer...
    Si vous avez une idée, elle sera la bienvenue.

    Merci, Loceka.

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    salut,
    alors visiblement, pour des raisons de securité, tu ne peux pas passer des objets complets (obtenus avec cloneNode(true)) mais le innerHTML passe.

    page 1 :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <html>
    	<head>
    	<title>copie</title>
    		<script type='text/javascript'>
    			function copy(elemid){
    				var win = window.open("fen2.html","fen2","width=500;height=500");
    				win.document.getElementById("pasteHere").innerHTML = document.getElementById(elemid).innerHTML;
    			}
    		</script>
    	</head>
    	<body>
    		<div id="div1">
    			contenu du div 1 .... <br />
    			<ul>
    				<li>1</li>
    				<li>2</li>
    				<li>3</li>
    			</ul>
    		</div>
    		<hr />
    		<div id="div2">
    			contenu du div 2 .... <br />
    			<ul>
    				<li>5</li>
    				<li>6</li>
    				<li>7</li>
    			</ul>
    		</div>
    		<input type="button" value="copier div 1" onclick="copy('div1')" />
    		<input type="button" value="copier div 2" onclick="copy('div2')" />
    	</body>
    </html>
    page 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <html>
    	<head>
    	<title>fenetre 2</title>
    	</head>
    	<body>
    		<div id='pasteHere'>
    		</div>
    	</body>
    </html>
    si tu veux cumuler, il suffit de faire un += au lieu du =

  3. #3
    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
    salut;

    intéressant, mais IE va te poser problème;

    tu peux créer un double du noeud via element.cloneNode(true), puis l'intégrer au dom du document ouvert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("noeud").appendChild(element_cloné);
    mais IE, conforme aux spéc, d'ailleurs, n'admet pas un append quand le neoud ne fait pas partie du même document;

    il te reste innerHTML si tu tiens à copier un contenu html;

  4. #4
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 843
    Points
    4 843
    Par défaut
    Merci beaucoup à tous les 2 !

    La solution de siddh fonctionne à merveille et je n'ai pas encore testée l'autre, mais si elle n'est pas conforme au DOM, je crois que je vais l'oublier.

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ce dont te parle javatwister est conforme au dom mais ne marchera pas pour des raisons de sécurité.

  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
    désolé siddh, j'avais rédigé pendant que tu postais:

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    vivi je me doutais

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

Discussions similaires

  1. [Débutant] copier l'élément sélectionner dans une liste
    Par Henry9 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 29/04/2007, 21h49
  2. [VBA-E]Copier des éléments excel dans word
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2007, 10h11
  3. Savoir si un élément existe dans un tableau
    Par peuf23 dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2006, 12h09
  4. [utilisateur]copier un compte existant
    Par ehmppowa dans le forum Oracle
    Réponses: 2
    Dernier message: 13/06/2006, 10h32

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