2010-07-07 11 views
1

J'ai problème avec ce morceau de code:Erreur lors de la suppression attribut contentEditable en utilisant JQuery dans FF et Opera, travaille dans Chrome

var el = $('div#editor'); 
el.find('*[contentEditable]').removeAttr('contentEditable'); 

Il fonctionne très bien dans Chrome 4/5/6, mais il ne fonctionne pas travailler dans FF (3.6.) ou Opera (10.60).

Dans FF il jette cette exception:

Erreur: exception non traitée: [Exception ... "Une chaîne invalide ou illégale a été spécifié" code "12" nsresult: "0x8053000c (NS_ERROR_DOM_SYNTAX_ERR)" emplacement "

Est-ce que quelqu'un a une idée de pourquoi cela se produit et comment le réparer?

En ce moment, je me sers de ce correctif, mais ce n'est pas une solution propre, car il laisse attribut contentEditable et je dois nettoyer le côté serveur:

try { 
    el.find('*[contentEditable]').removeAttr('contentEditable'); 
} catch (e) { 
    el.find('*[contentEditable]').attr('contentEditable', false); 
} 
+0

Bienvenue à SO, pendant que vous êtes ici, s'il vous plaît ne pas oublier de visiter http://stackoverflow.com/faq – Reigel

Répondre

1

fonctionne très bien pour moi ...

html

<div contenteditable="true">testing....</div> 

jQuery

$('[contenteditable]').removeAttr('contenteditable'); 

peut-être essayer toutes les petites lettres sur contenteditable et enlever * sur $('*[contenteditable]')

demo

testé sur FF (3.6.) Ou Opera (10,10).

+0

Merci beaucoup, maintenant je me sens un peu stupide, parce que j'ai essayé beaucoup de choses, sauf votre solution simple. Maintenant, cela fonctionne comme il se doit. Merci également de poster démo - il semble que j'ai découvert un outil utile pour tester - jsfiddle.net. – Frodik

+0

Vous êtes les bienvenus ... – Reigel