ContentEditable DIV - deaktivieren der drag-and-drop
Ist es möglich, deaktivieren Sie die drag-und-drop-Funktion auf die Elemente, die das contentEditable-Attribut auf true festgelegt.
Habe ich die folgende HTML-Seite.
<!DOCTYPE html>
<html><meta charset="utf-8"><head><title>ContentEditable</title></head>
<body>
<div contenteditable="true">This is editable content</div>
<span>This is not editable content</span>
<img src="bookmark.png" title="Click to do foo" onclick= "foo()">
</span>
</body>
</html>
Das Hauptproblem, das ich bin vor ist, dass es möglich ist, per drag-and-drop das Bild in das DIV und es kopiert wird (zusammen mit dem Titel und den click-handler)
InformationsquelleAutor der Frage sonofdelphi | 2010-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem folgenden snippet wird verhindern, dass deine div-Empfang geschleppt Inhalt:
Ich (und einige andere) finden diese api ist merkwürdig und counter-intuitive, aber es verhindert eine contenteditable, die von der empfangenden gezogen, der Inhalt in allen Browsern außer dem IE8 (einschließlich IE9 beta). Als der noch, ich kann nicht verhindern, dass der IE8 von der Annahme contenteditable.
Werde ich aktualisieren diese Antwort, wenn ich einen Weg finden, dies zu tun.
InformationsquelleAutor der Antwort brad
Interessant, ich weiß nicht, die drag-and-drop-Schnittstelle gut genug, um sicher zu sein, aber es sieht aus wie es irgendeine Art von Fehler hier. Ich veränderte Sie Ihren code leicht zu fügen Sie einen Ereignishandler für das Ereignis drop auf die editierbaren div:
Ich Teste in Firefox 3.7 alpha: wenn ich ziehen Sie das Bild auf der Mitte der text, der das Ereignis ausgelöst wird, bekomme ich eine Warnung, und die
return false
Stoppt das Bild gelöscht wird. Aber wenn ich ziehen Sie auf, um den Anfang des Textes, die Ereignis nicht ausgelöst, aber das Bild wird eingefügt in die div. Wohlgemerkt, in Firefox 3.6 und Chrom 6.0 das Ereignis nicht ausgelöst, also entweder ich habe komplett falsch verstanden wie es funktioniert oder gar nichts, es funktioniert gut genug, jetzt zu verlassen.InformationsquelleAutor der Antwort robertc
In Chrome und Firefox, Sie haben zum Abbrechen der
ondragover
Ereignis für dieondrag
- Ereignis ausgelöst. Ich würde auch empfehlen, den Abbruch desondragenter
undondragleave
Veranstaltungen nur um sicher zu sein.http://jsbin.com/itugu/2
Dieses Verhalten ist kein bug; in der HTML5-Spezifikation sagt, dass
ondragover
muss abgebrochen werden, fürondrag
Feuer. Es macht keinen Sinn, es zu tun auf diese Weise, so hoffe ich, ändern Sie es bald. Sehen http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.htmlInformationsquelleAutor der Antwort Na7coldwater
Wäre es möglich, deaktivieren Sie alle mousedown-events auf dem Bild?
InformationsquelleAutor der Antwort Dries