2016-05-05 3 views
0

Ich habe diese simple html:Firefox: contenteditable kann nicht bearbeitet werden, wenn sie innerhalb ziehbar Eltern verschachtelt ist

<div draggable=true> 
    <div contenteditable=true>can't edit me</div> 
</div> 

In Chrome ich den Inhalt contenteditable bearbeiten können, aber das kann ich in Firefox und IE nicht. Ist das ein bekanntes Problem? Warum erlaubt Chrome die Bearbeitung? Alle vorhandenen Problemumgehungen?

+0

https://github.com/kenwheeler/slick/issues/479 –

+0

@IsmailFarooq, nein, das ist ein anderer Fall –

Antwort

1

Das Problem ist, dass die Click-Handhabung für das draggable Element mit der contenteditable Handhabung kollidiert - beide erfordern Sie zu klicken, also welcher Handler sollte verwendet werden?

Es gibt ein paar Möglichkeiten, die Sie ergreifen könnten. Die Version unten deaktiviert draggable, wenn Sie auf, um es dem Benutzer zu ermöglichen, auf dem bearbeitbaren Inhalt zu konzentrieren, und ermöglicht es dann, wenn Sie doppelklicken Sie stattdessen:

<div class="content"> 
    <span>Edit and drag me</span> 
</div> 

$(".content").draggable() 
    .click(function() { 
    $(this).draggable({ disabled: false }); 
}).dblclick(function() { 
    $(this).draggable({ disabled: true }); 
}); 

Alternativ gibt es eine gute Lösung ist here die Einstellung beinhaltet die handle Eigenschaft von draggable zu einem äußeren Element über einen Klassenselektor, der mit CSS positioniert ist. Dies ist wahrscheinlich eine bessere Lösung als Hacking mit Klickereignissen, aber es hängt von Ihrer Verwendung ab.

aktualisieren ich eine leicht modifizierte Version der Lösung hinzugefügt habe ich oben here verknüpft. Sie können den Text bearbeiten und das Ganze über das Griffsymbol ziehen.

+0

danke, ich würde mich freuen, wenn Sie es für meine Situation gezeigt, wie es ein bisschen anders ist als die eine in der Verbindung, die Sie zur Verfügung gestellt haben –

+0

Siehe mein Update. Ich hoffe, das hilft dir. –

+0

Ich sehe jetzt, danke. Es nutzt keine native Drag-Funktionalität eines Browsers. Ich frage mich, ob es eine Möglichkeit gibt, einen ähnlichen Ansatz mit nativer Funktionalität zu implementieren? –

Verwandte Themen