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 :

Une< DIV> insérée, par une fonction, ne s'aligne pas dans une ligne <P>


Sujet :

JavaScript

  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut Une< DIV> insérée, par une fonction, ne s'aligne pas dans une ligne <P>
    bonjour a tous

    ma fonction d'insertion d'un div englobant une selection fonctionne mais le div va tout de suite a la ligne je ne sais pas comment le faire rester sur la meme ligne dans un content editable(WYSIWYG)


    la fonction

    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
    <script type="text/javascript">
    var elementactif;
    function selection(){ return window.getSelection().getRangeAt(0);}
    function Insertdiv() {
    var container = document.createElement("div");
    container.style.width="200px";
    container.style.height="200px";
    var divID="div" + document.getElementsByTagName ("DIV").length;
    container.id=divID;
    container.style.border="1px solid black"; 
    container.style.border="1px solid black"; 
    container.innerHTML="<p> </p>";
    document.title="divactif:" +divID;
    selectione= selection();
    documentFragment = selectione.extractContents(); 
    container.appendChild(documentFragment);
    selectione.insertNode(container);
    document.getElementById(divID).addEventListener("mouseup", function() {  document.title="divactif:" +divID;  });
    }
    //codescript;
     
    </script>
    le resultat en haut l'original
    en bas le resultat en ayant selectionner "un div stylé"

    Nom : Capture.JPG
Affichages : 255
Taille : 62,0 Ko
    si quelqu'un a une solution ? je suis preneur
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    Comment vas-tu depuis le temps ? Il est beau ton éditeur... C'est celui sur lequel tu bossais il y a quelques temps ?

    Le code que tu mets n'est pas complet, non ? Je demande ça car je ne vois où tu mets le style qu'on voit sur l'image...

    Sinon pour ta question, je vois deux points :

    1- une div est un block donc je pense pour éviter le retour à la ligne tu pourrais rajouter : container.style.display = "inline";...

    2- Le paragraphe est aussi un block donc je pense que cette instruction pose aussi problème : container.innerHTML = "<p> </p>";...

    Et je pense qu'elle n'est pas utile dans ton cas...

    Citation Envoyé par patricktoulon Voir le message
    ma fonction d'insertion d'un div englobant une selection fonctionne...
    Si c'est pour englober la sélection alors pourquoi fixer une taille à la div avec ces instructions : container.style.width = "200px"; container.style.height = "200px";... La taille de la div ou du moins sa largeur devrait être celle du texte sélectionné, non ?

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonjour beguiner oui il y avait longtemps Meilleurs veux!!

    oui plus ou moins c'est le meme sauf que travaille toujours dans un userform en vba excel et que les fonctions vont etre apellées a partir de controls dans celui ci
    ca me permet d'avoir un form transportable sans etre accompagné de modules

    et oui j'y ai pensé au P dans le div forcément
    j'ymagine que le display in line est de rigeur pour le p parent je vais tester
    il va faloir que je fasse une boucle pour remonter au parent P et le mettre en inline c'est ca ?

    pour les style que tu ne vois pas c'est justement parce que c'est vba qui le fait

    exemple en vba
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    with actifelem.style:.border=" 1px solid black":.backgroundcolor="#ff0000":end with
    c'est ni plus ni moins que du dom

    le model que j'avais fait en html je l'ai toujours si tu le veux
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ben en fait le paragraphe tu n'en as pas besoin, la div suffit, non ?

    Sinon le display:inline c'est pour la div que tu insères, celle qui englobe la sélection, c'est-à-dire celle que tu as nommée "container" il me semble, c'est pourquoi je te disais que tu pourrais rajouter : container.style.display = "inline"; dans ta fonction...

    Mais j'ai peut-être mal compris ?

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    oui a la limite le div c'est pas grave son interieur mais c'est juste son alignement a son parent que je veux

    je viends de tester le"inline " ca ne fonctionne pas il n'y a plus de P dans le container pourtant

    demonstration(regarde bien le code obtenu j'ai un boutonpour ca) il est correcte pourtant (mesemble t il )
    Nom : demo2.gif
Affichages : 242
Taille : 737,2 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 136
    Points
    44 136
    Par défaut
    Bonjour,
    il faut de temps en temps reprendre les spécifications, et les lire.

    Un élément <P> ne peut pas contenir un élément DIV et ce quelque soit son mode de rendu, inline, block ou autres... de plus la construction est invalide et le rendu par les navigateurs sera toujours le même :

    Ce code HTML
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <p>Un <div class="display: inline">deux </div>trois</p>
    donnera
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <p>Un </p><div class="display: inline">deux </div>trois<p></p>

    Pour un rendu à l'affichage uniquement ce code
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <p style="display:inline">Un <div style="display:inline">deux </div>trois</p>
    donnera
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <p style="display:inline">Un </p><div style="display:inline">deux </div>trois<p></p>
    cela reste NON CONFORME.

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonjour Nosmoking
    ok donc c'est pas possible alors comme ca c'est clair

    je voulaire des encarts type journal un carré de texte avec images et autres entouré de texte
    tant pis je le ferais avec des div en position absolute
    merci
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ah ok je n'avais pas percuté que le texte était dans un paragraphe...

    Merci NoSmoking pour l'infos !

    Dans ce cas tu peux utiliser des balises inlines comme <span>, je viens de tester tu peux mettre plusieurs styles (border, border-radius...) par contre si tu veux fixer une taille ça ne marche pas mais il suffit d'ajouter à la <span> un display: inline-block...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Par contre, on peut mettre un <span> dans un <p> !
    Auquel cas il faut le définir en display:inline-block (car un span est par défaut en inline).


    Il faut VRAIMENT que tu connaisses mieux les balises HTML de base, leur sémantique et hiérarchie...

  10. #10
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ah ben je vois que jreaux62 confirme mais comme je disais dans mes tests le display:inline-block c'est si on veut fixer une taille mais le reste semble fonctionner même le padding...

    Voici un lien pour vérifier : http://jsbin.com/puqevaqoju/edit?html,output

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    merci messieux


    c'est quand meme mieux que la commande execcommand "backcolor" quoi que j'ai pas testé
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ca dépend je pense... Si c'est pour mettre un style géré par execCommand je pense que execCommand est mieux mais si tu veux un style particulier non géré ben tu n'as pas le choix... Comme par exemple un border-radius ou un padding ou un height... il ne me semble pas avoir vu que execCommand puisse le faire...

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    non je ne crois pas mais il est possoble d'identifier le nouveau font en background et lui mettre le borderradius
    la selection reste la meme avec execcomnand
    il te suffit de faire un second extract content il aura cette fois si la font en backcolor dans le segment et dans un createsegment contenant l'extraction ajouter tout les properties que tu veux
    il me semble que je l'avais deja fait


    mais de toute facon c'est pas ca que je voulais essayer de faire et visiblement comme tel c'est pas possible
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #14
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Oui tu avais ouvert une longue discussion là-dessus... Mais rappelle-toi comment c'était galère de faire le ménage aussi bien que execCommand...

    extractcontent pose problème parfois elle modifie le dom (lorsque la sélection est à chevale sur plusieurs balises)...

    Rappelle-toi on s'était pris la tête pour supprimer un formatage/style tout en retrouvant le Dom comme il était avant qu'on mette ce formatage/style...

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui je m'en rapelle mais c'etait pour les ombres de texte

    mais la en l'occurence ca ne cause pas de soucis car la commande refait son netoyage toute seule(on sort pas de la fonction execcommand initiale

    le netoyage est vite fait

    je me bas depuis tout a l'heure pour faire un back dans un html local pour testyer la théorie et impossible une majuscule quelque part encore

    Code HTML : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
         <meta http-equiv="X-UA-Compatible" content="IE=10">
    <title>JS Bin</title>
        <style>
          
          .code {       
            border: 1px solid black;
            height: 200px;
            white-space: pre;      
          }
     
        </style>
    <script type="text/javascript">
          
            function selection() {
              return window.getSelection().getRangeAt(0);
            }
            
            function stylise() {
             document.execCommand("BackColor",False,"#FF0000"); /// ca ne fonctionne pas 
           
            //var container = document.createElement("span");
            //selectione = selection();
            //documentFragment = selectione.extractContents();
            //container.appendChild(documentFragment);
            //selectione.insertNode(container);
               
           }
       
     </script>
      </head>
      <body>
        <div class="code" contenteditable="true" spellcheck="false">Ici du texte pour faire des tests...
          Ici du texte pour faire des tests...
          Ici du texte pour faire des tests...  
        </div>
        <br>
          <button onclick="stylise();">style</button>
     
     
      </body>
    </html>
    une!! ligne et elle ne fonctionne pas
    des fois je me rends fou avec des petits trucs comme ca
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ah Ah et oui...

    Remplace "False" par "false"...

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    j'avais fini par trouver

    je suis en train de faire des tests et ca marche
    un execcommand backcolor
    clonnecontent 'ici on a deja le font avec le background
    create container
    appendchild le clonne
    prendre le children(0) qui est le font background dans le container
    mettre toutes les propriéte possibles au children(0) que l'on veux radius ca marche
    et enfin selectione.insertNode(container.children(0));
    ca marche

    je verifie pour le netoyage eventuel mais je ne crois pas
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  18. #18
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    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 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonsoir Patrick, ça faisait un moment

    Quelques suggestions en vrac.

    Apparemment on n’a pas le droit de mettre une <div> dans un <p>. Qu’à cela ne tienne, <span style="display: block"> (ou inline-block comme l’a suggéré Beginner) et le machin n’y voit que du feu

    Le premier truc qui m’est venu à l’esprit en lisant le titre de la conversation, c’est white-space: nowrap. Il me semble que personne n’a encore suggéré ça. À combiner éventuellement avec overflow: visible, je ne sais jamais quand c’est nécessaire ou pas…

    Pour ce qui est de la détection d’erreurs JavaScript, on l’a vu, ton environnement n’était pas idéal. Au moins pour les erreurs de syntaxe (dont ces agaçantes histoires de majuscules/minuscules), tu peux utiliser les outils F12 des navigateurs Chrome ou Firefox. Tu ouvres une console, tu colles ton code dedans, tu appuies pas trop fort sur entrée et tu vois ce que ça donne.
    Pour des problèmes plus subtils, tu peux te servir d’un éditeur de texte avec un plugin JSLint ou JSHint. Il y a Atom et Brackets qui sont à la mode en ce moment, je crois qu’ils font ça tous les deux. Sinon il y a aussi des services en ligne comme jshint.com qui font ça très bien. …
    Peut-être même trop bien
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  19. #19
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour waitlin meilleurs veux

    mon soucis d'erreur de syntaxe et du aussi au fait que je me mélange les pinceaux VBA/javascript

    et oui mon environnement est toujours le même a savoir un Control web browser dans VBa ,il est vrai que les maj/min sont un soucis pour moi ce qui fonctionne dans un html local dans IE ou

    chrome ,ne fonctionnera pas toujours dans mon Control
    mais bon je m’en sort quand même
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/10/2012, 11h16
  2. Concaténation dans une variable partagée par 2 fonctions
    Par Aiglon13 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 23/05/2012, 09h36
  3. Réponses: 1
    Dernier message: 25/09/2009, 12h03
  4. Réponses: 6
    Dernier message: 29/07/2009, 15h31
  5. La fonction CurrentDb() ne fonctionne pas dans une requête
    Par Sébastien Le Goyet dans le forum Access
    Réponses: 8
    Dernier message: 24/11/2005, 17h46

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