7
votes

Backspace ne supprime pas les étiquettes HTML intérieures d'une DIV contentiable dans Firefox

J'ai créé un DIV avec attribut contentéditable = true et a annexé des enfants comme span et A avec attributs contenttitable = faux < / code>.

voulait tester si l'intégralité du nœud est supprimé d'un seul sac à dos et de ma surprise Firefox ne pouvait pas supprimer les éléments.

En outre, cela fonctionne comme prévu dans tous les grands navigateurs de bureau, à l'exception de Firefox. de
Des indices sur cela ou ce qui pourrait être la solution possible?

a trouvé le problème exact sur bugzilla ici .


1 commentaires

BugZilla Living (veuillez voter pour les influencer pour le réparer)


3 Réponses :



0
votes

J'ai fait face à un mauvais insecte terrible et n'avait plus d'autre choix que de faire une solution basée sur JavaScript élaborée qui écoute les événements KeyPress et si Backspace Kbd> a été enfoncé et que le caret était juste à la décalage du départ. d'un nœud de texte, et le nœud avant qu'il s'agisse d'un nœud d'élément, supprimez tout ce nœud d'élément entier.

p>

<div contenteditable='true'>
  Try deleting theme <mark contenteditable='false'>marked</mark> words on <mark contenteditable='false'>Firefox</mark> ok?
</div>


2 commentaires

Cela supprime des éléments avant la div, pas le contenu à l'intérieur.


@TylerLazenby c'est ce que OP a demandé. Toute cette question concerne la résolution du bogue FF où le dernier nœud ne peut pas être supprimé, pas le contenu du texte du nœud, vous avez donc dit dans votre commentaire, et je cite OP: ... Tout le nœud entier doit être supprimé avec un seul sac à dos



1
votes

Essayez d'ajouter une fonction "OnKeydown" sur la Div modifiable pour arrêter la propagation des événements (comme suit). Travaillé pour moi:

ONKEYDOWN = (E) => {E.StopPropagation (); }


0 commentaires