diff --git a/public/widget.js b/public/widget.js
index 2af4f25..ba0815a 100644
--- a/public/widget.js
+++ b/public/widget.js
@@ -272,7 +272,7 @@
if (message.senderType === "admin") lastAdminName = message.senderName || "Operator";
else lastAdminName = null;
}
- messages.scrollTop = messages.scrollHeight;
+ scrollMessagesToBottom(messages);
}
function addMessage(messages, sender, senderName, body, attachments, lastAdminName) {
@@ -286,7 +286,19 @@
item.className = `mf-message ${sender}`;
item.innerHTML = `${body ? `
${escapeHtml(body)}
` : ""}${attachments.map((a) => `
`).join("")}`;
messages.append(item);
- messages.scrollTop = messages.scrollHeight;
+ for (const image of item.querySelectorAll("img")) {
+ image.addEventListener("load", () => scrollMessagesToBottom(messages), { once: true });
+ image.addEventListener("error", () => scrollMessagesToBottom(messages), { once: true });
+ }
+ scrollMessagesToBottom(messages);
+ }
+
+ function scrollMessagesToBottom(messages) {
+ const scroll = () => { messages.scrollTop = messages.scrollHeight; };
+ scroll();
+ requestAnimationFrame(scroll);
+ setTimeout(scroll, 80);
+ setTimeout(scroll, 240);
}
function mergeImageFiles(currentFiles, incomingFiles) {