2010-10-29 4 views
0

j'ai le morceau de code suivant:Comment ajouter contentEditabled div prototype dans IE8

<form action="/fake" > 
    <div id="root"> 
    </div> 
</form> 

<script type="text/javascript"> 
    var root = Element.extend($("root")); 

    function addTextControl() 
    { 
     var textCtl = new Element('div', { 'contenteditable': 'true'}).update("Next page"); 
     root.appendChild(textCtl); 
    }; 

    addTextControl(); 
</script> 

Il fonctionne parfaitement en FF et Chrome, mais pas dans IE8 :-(Quel est le problème avec elle.?

Nous vous remercions à l'avance

+0

Le sélecteur jquery est mauvais Le sélecteur doit être $ ("# root"), mais ff/crome devrait avoir des problèmes avec cela. –

+0

Il utilise le prototype non jquery. – InvisibleBacon

Répondre

2

-vous croire que c'est un problème de boîtier

Essayez plutôt:

new Element('div', { 'contentEditable': 'true'})... 

Notez la capitale E dans contentEditable.

+1

+1. Cela est dû au fait que IE ne comprend pas la différence entre un attribut et une propriété. En général, vous devriez éviter 'setAttribute' et utiliser des propriétés à la place (où la majuscule' E' est requise sans équivoque) en raison de ce genre de bug IE. Malheureusement, Prototype (comme jQuery) tente de brouiller la distinction, en essayant de vous permettre de définir les propriétés et les attributs à travers l'interface 'new Element'. IMO cette fonctionnalité est mieux évitée car elle rend seulement les bugs plus subtiles et difficiles à comprendre. – bobince

+0

Bonne explication. – InvisibleBacon

Questions connexes