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] [Opera] définition ContentEditable via le DOM


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Par défaut [DOM] [Opera] définition ContentEditable via le DOM
    Bonjour,

    Je souhaite créer un éditeur de texte en javascript.
    Pour cela je créer mes éléments via le DOM avec une syntaxe de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.createElement('div');
    Jusqu'ici pas de souci. Mais, c'est lorsque que j'ajoute l'attribut contentEditable à mon div que je rencontre un léger bug sur Opéra : mon div, n'est pas "éditable".

    voici un extrait de mon code :

    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
    attr.appendChild(divToolbar);
    					attr.appendChild(divShowingElements);
    					attr.appendChild(Hr2);
    					var divEdit = document.createElement('div');
    					divEdit.contentEditable=true;
    					divEdit.setAttribute("contentEditable", true);
    					divEdit.className="editable";
    					divContent.appendChild(attr);
    					var divEditArea = document.createElement('div');
    					divEditArea.style.clear="both";
    					divEditArea.style.display="block";
    					divEditArea.appendChild(divEdit);
    					var textArea = textAreaField[textClasses.currentInstance];
    					divEdit.innerHTML=textArea.id;
    					divEditArea.appendChild(textArea);
    					divEditArea.appendChild(Hr4);
    					divContent.appendChild(divEditArea);
    					divContent.appendChild(Hr3);
    J'ai également testé dans une nouvelle page et apparemment il semble qu'un élément ne peut être spécifier "éditable" que s'il fait déjà parti de la page HTML. Du coup, je vois une alternative pas trop propre qui est d'attribuer le contenteditable au parent (qui se trouve en dur dans la page HTML) et de mettre tout autres éléments que le div concerné en "contenteditable=false".

    Bref, en fait, ce que je cherche c'est un moyen s'il existe de spécifier en javascript l'attribut contenteditable directement sur mon "divEdit".

    Voilà, j'espère avoir été assez clair dans mes explications.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,
    Tu peux nous dire quelle version d' Opera tu utilises car contentEditable n'est supporté que par les versions récentes de navigateur à part IE. Je pense qu'il n'est supporté que par Opéra 9 (à vérifier).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Par défaut
    Oups, désolé...
    Oui c'est bien ça, j'ai la version 9.63

    Et j'ai oublié de préciser qu'avant, j'avais une version en écrite en html à laquelle je lui affecter quelques attributs en javascript et ça marchait nickel.

    Sauf que maintenant que j'essaie de le faire en full JS, ça n'a pas l'air d'être du goût d'Opera. Et pourtant quand je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(divEdit.getAttribute("contentEditable"));
    Cela m'affiche bien "true".

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Par défaut
    Bon je viens de trouver, apparmment il faut insérer le noeud avant de lui spécifier l'attribut

    dans mon code il y avait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var divEdit = document.createElement('div');
    					divEdit.contentEditable="true";
    					divEdit.setAttribute("contentEditable", true);
    					divEdit.className="editable";
    					divContent.appendChild(attr);
    					var divEditArea = document.createElement('div');
    					divEditArea.style.clear="both";
    					divEditArea.style.display="block";
    					divEditArea.appendChild(divEdit);
    et maintenant, j'ai changé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var divEdit = document.createElement('div');
    					divEdit.contentEditable="true";
    					divEdit.className="editable";
    					divContent.appendChild(attr);
    					var divEditArea = document.createElement('div');
    					divEditArea.style.clear="both";
    					divEditArea.style.display="block";
    					divEditArea.appendChild(divEdit);
    ...
    divEdit.setAttribute("contentEditable", true);
    En gros il faut mettre le setAttribute à la fin.

    Voilà, c'était bête, bon bah résolu...

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

Discussions similaires

  1. [DOM] Extraction des liens via la manipulation du DOM
    Par GoldenEyes dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 08/05/2008, 14h25
  2. [DOM] Comment modifier via le DOM les attributs d’un champ INPUT ?
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/04/2008, 13h47
  3. [DOM] Modification du HTML via une fonction JS ?
    Par ghohm dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/11/2007, 16h22
  4. [DOM]modifier une balise xsl via le DOM
    Par boule_t dans le forum APIs
    Réponses: 1
    Dernier message: 19/10/2007, 14h54
  5. [DOM] héritage "onmouseover" via le dom
    Par arena94 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/10/2006, 00h06

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