2010-11-22 16 views
14

Ich habe ein div mit dem contenteditable Attribut auf True gesetzt, aber es zeigt keinen blinkenden Cursor oder Update, wenn ich Text hineinsetze. Ich habe Ereignis-Listener für Fokus, Keydown und Tastendruck hinzugefügt, um zu sehen, ob das Div sie empfängt, UND ES IST!contenteditable div nicht wirklich editierbar in webkit

Wie könnte es sein, dass alle geeigneten Ereignisse tatsächlich feuern, aber der Inhalt des div sich nicht angemessen aktualisiert? Ich mache nichts Unkonventionelles wie das Standardverhalten der Ereignisse zu verhindern.

Auch habe ich zufrieden stellend arbeiten gut in Ordnung mehrere Male zuvor auf verschiedenen Projekten, so dass ich ziemlich sicher bin, ist es ein Bug, der durch die Struktur der HTML-Seite dieser bestimmten Seite verursacht wird. Auch dieses Problem tritt nur in Chrome und Safari auf. Firefox und IE8 sind in Ordnung.

Antwort

38

Okay, ich habe mein Problem herausgefunden. Ich hatte die CSS-Eigenschaft '-webkit-user-select' auf keinem Element auf einem Element in der Hierarchie des fraglichen div gesetzt. Dadurch wurde verhindert, dass der Cursor jemals innerhalb meines contentEditable div positioniert wurde.

Interessanterweise hat der entsprechende '-moz-user-select' (den ich auch in der Hierarchie nicht gesetzt habe) keine Auswirkungen auf Firefox auf die gleiche Weise.

+3

Sie sparen meinen Tagemann !! –

+0

Das ist absolut richtig, ich konnte nicht herausfinden, warum meine Seite mich nicht irgendwelche Bearbeitungen ausführen ließ, dann erkannte ich, dass Benutzerauswahl deaktiviert war. Vielen Dank. –

+0

Sie hätten wählen können, die Antwort nicht zu posten, aber Sie haben es nicht getan, danke –

19

Ich möchte diesen Code mit Ihnen teilen. Es könnte dir helfen! Sie deaktivieren die Benutzerauswahl und Callout für die gesamte Site und überschreiben dann die contenteditable Felder, um Benutzerauswahl zu ermöglichen.

html,body{ 
    -webkit-user-select: none; 
    -webkit-touch-callout: none; 
} 

*[contenteditable] { 
    -webkit-user-select: auto !important; 
} 
Verwandte Themen