2008-10-18 6 views
3

J'utilise l'attribut contentEditable sur un élément DIV dans Firefox 3.03. Le définir sur true me permet d'éditer le contenu du texte de la DIV, comme prévu. Ensuite, lorsque je mets à "false" contentEditable, la div n'est plus modifiable, comme prévu. Toutefois, le curseur clignotant (curseur de saisie de texte) reste visible même si le texte n'est plus modifiable. Le curseur est maintenant également visible lorsque je clique sur la plupart des autres textes de la même page, même dans les paragraphes de texte normaux.Firefox 3.03 et contentEditable

Quelqu'un at-il déjà vu cela? Y a-t-il un moyen de forcer le signe caché?

(Quand je redimensionnez le navigateur ou cliquez dans une autre application, et revenir, le caret disparaît comme par magie.)

Répondre

6

J'ai eu affaire à cela et ma solution de contournement est Clearing la sélection lorsque je désactive contentEditable:

if ($.browser.mozilla) { // replace with browser detection of your choice 
    window.getSelection().removeAllRanges(); 
} 

je retire en fait le "contenteditable" attribut pour les navigateurs autres que IE, plutôt que de le mettre à faux:

if ($.browser.msie) { 
    element.contentEditable = false; 
} 
else { 
    $(element).removeAttr('contenteditable'); 
} 

Les navigateurs gèrent l'attribut contentEditable de manière incohérente et mes tests ont révélé que cela fonctionnait mieux dans l'ensemble. Je ne me souviens pas si cela a contribué à résoudre le problème du caret, mais je le jette ici juste au cas où.

+0

Merci pour les conseils. removeAllRanges() semble au moins cacher le curseur après avoir défini conteEditable à false, un peu mieux. Cependant il revient encore si je clique ailleurs sur le texte. supprimer l'attribut lui-même ne semblait pas avoir d'effet. Peut être quelque chose que Mozilla peut corriger dans une nouvelle version. – Ash

+0

Une recherche rapide dans bugzilla révèle qu'il existe un bug connu où la définition de contentEditable = false déclenche le mode caret pour toute la page. Ma suppression de l'attribut est une raison probable pour laquelle je ne vois pas ce bug. Voir: https://bugzilla.mozilla.org/show_bug.cgi?id=433692 – Borgar

+1

Et dans Firefox 16 ce bug existe toujours! Suppression de l'attribut n'aide pas, mais la solution de contournement dans cette réponse aide! Merci! – tborychowski

0

L'attribut de style -moz-user-input peut être utilisé dans Firefox pour que la fonctionnalité contenteditable=false fonctionne.
La valeur affectée définit si l'entrée de l'utilisateur est acceptée. Les valeurs possibles sont

none  : The element does not respond to user input. 
enabled : The element can accepts user input. This is default. 
disabled : The element does not accept user input. 

.: par exemple

// to disallow users to enter input 
<asp:TextBox ID="uxFromDate" runat="server" style="-moz-user-input: disabled;"></asp:TextBox> 

// to allow users to enter input 
<asp:TextBox ID="uxFromDate" runat="server" style="-moz-user-input: enabled ;"></asp:TextBox> 

Se reporter à la https://developer.mozilla.org/en/CSS/-moz-user-input pour référence ultérieure.

0

Cette résoudre le ploblem, ressemble à Firefox est en train de vérifier est propre façon de faire les choses: P

getDoc().designMode = "off"; 
Questions connexes