Ticket #1733 (closed defect: fixed)
Nouveau billet : disparition <p></p> si insertion image en xHtml
| Reported by: | Mirovinben | Owned by: | team | 
|---|---|---|---|
| Priority: | normal | Milestone: | 2.6 | 
| Component: | module:core | Version: | dev | 
| Severity: | normal | Keywords: | |
| Cc: | 
Description
Défaut apparu après la 2.6-r2096. Cache navigateur vidé. Constaté avant premier enregistrement du billet.
Nouveau billet en mode xHtml. Insertion image depuis médiathèque en mode "Visuel" sans positionnement demandé (que ce soit dans l'extrait ou le contenu). Constat lors du basculage en mode "source" :
Windows 7 - Chrome 29 / Safari 5.1.7 / Opera 16.0 : la balise <img /> est présente mais n'est plus dans un paragraphe.
Windows 7 - IE10 : tout est ok on a bien la séquence <p><img /></p>
Windows 7 - Firefox 24 : affichage de l'image en "visuel" et, de façon aléatoire mais fréquente, aucune balise visible en mode "source". Message d'erreur dans la console javascript de webdeveloper :
Erreur : TypeError: Not enough arguments to Range.setEnd. Fichier Source : (dotclear)/admin/js/jsToolBar/jsToolBar.wysiwyg.js Ligne : 25 Erreur : TypeError: commonAncestorContainer.tagName is undefined Fichier Source : (dotclear)/admin/js/jsToolBar/jsToolBar.wysiwyg.js Ligne : 30
Et si présence de la balise <img />, absence de <p></p>.
Change History
comment:2 Changed 12 years ago by lipki
Ça marche en : 2099:7af2e5aa15c2
Le bug est introduit en : 2102:fba83bbd6ee1 Avec la fusion de la branche : ticket 1406 ( qui règle un ticket, mais pas du tout le 1406 aucun lien de parenté )
L'erreur viens surement de la suppression de :
This.ibody.innerHTML = '<p><br _moz_editor_blogus_node="TRUE" _moz_dirty=""/></p>';
C'est marrant je voulais le supprimer la dernière fois que je suis passer par là, dans le doute je l'ai laisser ... Comme ça maintenant on sait a quoi ça sert.
comment:3 Changed 12 years ago by franck <carnet.franck.paul@…>
- Status changed from new to closed
- Resolution set to fixed
(In [ed5ea039a918]) Fixes #1733, thank's lipki for help!
comment:4 Changed 12 years ago by lipki
J'arrive pas a trouver de doc ou d'explication de l'utilité des attributs :
_moz_editor_bogus_node="TRUE" // oui c'est bogus pas blogus _moz_dirty=""
Après plein de test, on s'en sort très bien avec un simple <br/> qui s'il n'est pas utile disparait pendant le processus d'enregistrement.
Et du coup cette correction suffit :
@@ -88,7 +88,7 @@
 		} else {
 			var idoc = This.iwin.document;
 			var para = idoc.createElement('p');
-			para.appendChild(idoc.createTextNode(''));
+			para.appendChild(idoc.createElement('br'));
 			while (idoc.body.hasChildNodes()) {
 				idoc.body.removeChild(idoc.body.lastChild);
 			}
    
Je prend pas le ticket mais je cherche l'origine. On verra après.