Hat jemand Vorschläge zum Bearbeiten eines Links in einem contentEditable div? Es wäre ideal, wenn der Link entweder mit der Maus angeklickt wird oder der Cursor auf den Link klickt, dass eine kleine Eingabeaufforderung angezeigt wird und der Benutzer die href-Eigenschaft des Links ändern kann. Die Eingabeaufforderung ist nicht das Problem, aber wie ist es möglich zu erkennen, dass der Link entweder angeklickt wurde oder dass der Cursor den Link erreicht hat? onfocus scheint nicht in einem contentEditable div auf Firefox & Safari zu arbeiten. Irgendwelche Ideen?So bearbeiten Sie einen Link in einem contentEditable div
9
A
Antwort
15
Ich bin mir ziemlich sicher, dass das ist, was Sie gesucht haben, jedoch habe ich jQuery verwendet, nur um das Konzept ein wenig einfacher zu machen, zu verspotten. jsbin Vorschau verfügbar, also schau es dir an. Wenn jemand dies für die Antwort in reines JS konvertieren kann, habe ich es zu einem Community-Wiki gemacht.
Es funktioniert durch Bindung an die keyup/click -Ereignisse auf dem bearbeitbaren div, dann auf den Knoten, den der Benutzer Caret bei Verwendung window.getSelection()
für die Standards oder document.selection
für diese IE Personen platziert. Der Rest des Codes behandelt die Bearbeitung.
jQuery Methoden:
function getSelectionStartNode(){
var node,selection;
if (window.getSelection) { // FF3.6, Safari4, Chrome5 (DOM Standards)
selection = getSelection();
node = selection.anchorNode;
}
if (!node && document.selection) { // IE
selection = document.selection
var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
node = range.commonAncestorContainer ? range.commonAncestorContainer :
range.parentElement ? range.parentElement() : range.item(0);
}
if (node) {
return (node.nodeName == "#text" ? node.parentNode : node);
}
}
$(function() {
$("#editLink").hide();
$("#myEditable").bind('keyup click', function(e) {
var $node = $(getSelectionStartNode());
if ($node.is('a')) {
$("#editLink").css({
top: $node.offset().top - $('#editLink').height() - 5,
left: $node.offset().left
}).show().data('node', $node);
$("#linktext").val($node.text());
$("#linkhref").val($node.attr('href'));
$("#linkpreview").attr('href', $node.attr('href'));
} else {
$("#editLink").hide();
}
});
$("#linktext").bind('keyup change', function() {
var $node = $("#editLink").data('node');
$node.text($(this).val());
});
$("#linkhref").bind('keyup change', function() {
var $node = $("#editLink").data('node');
$node.attr('href', $(this).val());
$node.and('#linkpreview').attr('href',$(this).val());
});
});
Verwandte Themen
- 1. Fügen Sie einen Link in einem div-Tag hinzu
- 2. Extrahieren von Text aus einem contentEditable div
- 3. Wählen Sie den Bereich in contenteditable div
- 4. So bearbeiten Sie einen Dateitext in Perl
- 5. Klicken Sie auf einen Link, der hinter einem div steht?
- 6. Einstellung der Cursorposition in einem contentEditable div - cross Browser
- 7. Einfügen Mathjax in contentEditable div
- 8. Ein ContentEditable-Div schreibgeschützt machen?
- 9. ein DIV Entfernen Sie einen Link
- 10. Erhalten Sie Caret-Koordinaten auf einem contenteditable Div durch Javascript.
- 11. So deaktivieren Sie einen Link in IE6
- 12. Boden ausrichten auf einen Link in einem div
- 13. Contenteditable DIV length
- 14. Text in Javascript einfügen contenteditable div
- 15. Chrome scheint zu ignorieren Benutzer-Select in einem contenteditable div
- 16. Setzt und Cursorposition mit contenteditable div
- 17. cakephp machen div einen Link
- 18. über gezogene Bilder in einem contenteditable div benachrichtigt werden
- 19. Legen Sie die Caret-Position immer in contenteditable div
- 20. So validieren und bearbeiten Sie einen Zellenwert
- 21. Wie finde ich die Cursorposition in einem contenteditable DIV?
- 22. Spanne für ausgewählten Text in einem contenteditable div hinzufügen
- 23. contenteditable div nur akzeptieren Klartext
- 24. So bearbeiten Sie einen vorhandenen QR-Code
- 25. So bearbeiten Sie Inhalte in Angular Js Smart Table
- 26. Kann Bild in contenteditable Div auf Android
- 27. jquery Setzen der Cursorposition in contenteditable div
- 28. Link von einem div kopieren und in anderen div einfügen
- 29. So bearbeiten Sie Daten onclick
- 30. So unterdrücken Sie Wörter in einem DIV
Sehr cool, vielen Dank !!! –