Image from clipboard also in replies

This commit is contained in:
2026-06-29 00:16:58 +02:00
parent aa0def2949
commit e4389de288
4 changed files with 40 additions and 27 deletions
+4 -26
View File
@@ -97,32 +97,10 @@ document.getElementById("entry-form").addEventListener("submit", async (e) => {
});
// --- Bild aus der Zwischenablage einfügen ---
// Strg+V im Textfeld: liegt ein Bild in der Zwischenablage, übernehmen wir es in
// den File-Input (über DataTransfer, weil sich .files nicht direkt setzen lässt).
// Liegt kein Bild vor (Text o. Ä.), tun wir nichts und lassen den normalen Paste
// durchlaufen -> preventDefault nur, wenn wir wirklich ein Bild gegriffen haben.
document.getElementById("entry-form").addEventListener("paste", (e) => {
const item = [...(e.clipboardData?.items ?? [])].find(
(it) => it.kind === "file" && it.type.startsWith("image/")
);
if (!item) return;
const original = item.getAsFile();
if (!original) return;
e.preventDefault();
// Browser benennt Clipboard-Bilder uneinheitlich ("grafik.png" o. Ä.) -> neu
// verpacken mit sprechendem Namen. Endung aus dem MIME-Typ, sonst png.
const ext = (original.type.split("/")[1] || "png").toLowerCase();
const file = new File([original], `zwischenablage.${ext}`, { type: original.type });
const input = document.querySelector("#entry-form input[name='file']");
const dt = new DataTransfer();
dt.items.add(file);
input.files = dt.files;
document.getElementById("paste-msg").textContent = "Bild aus Zwischenablage übernommen.";
});
setupClipboardPaste(
document.getElementById("entry-form"),
document.getElementById("paste-msg")
);
// --- Statuszeile unter dem Titel ---
// Tage ohne Datenverlust (fester Startpunkt, Kontinuität seit der alten