This commit is contained in:
2026-07-16 23:45:21 +02:00
parent f6e9e13f4e
commit 5d490cf134
2 changed files with 18 additions and 13 deletions

View File

@@ -3732,8 +3732,8 @@ html[theme='f0ck95d'] {
html[theme="f0ck95d"] .item_title {
background: black;
border-left: inset 2px silver;
border-right: outset 2px silver;
border-left: inset 3px silver;
border-right: outset 3px silver;
}
html[theme="f0ck95d"] .err {
@@ -3816,11 +3816,6 @@ html[theme="f0ck95d"] .metadata {
color: var(--accent);
}
html[theme="f0ck95d"] .media-object {
border-left: inset 1px silver;
border-right: outset 1px silver;
}
html[theme="f0ck95d"] span.placeholder {
border-left: 1px solid var(--gray);
opacity: 0.5;

View File

@@ -546,10 +546,12 @@
const isExpanded = container.classList.contains('expanded');
const scrollHeight = inner.scrollHeight;
const clientHeight = inner.clientHeight;
// Check for images that haven't finished loading yet — their height is 0,
// which makes content appear shorter than it will actually be after load.
const hasUnloadedImages = Array.from(inner.querySelectorAll('img:not(.emoji)')).some(
img => !img.complete || img.naturalHeight === 0
const hasUnloadedImages = Array.from(inner.querySelectorAll('img:not(.emoji), video')).some(
media => {
if (media.tagName === 'IMG') return !media.complete;
if (media.tagName === 'VIDEO') return media.readyState < 1; // HAVE_METADATA
return false;
}
);
results.push({
@@ -599,8 +601,16 @@
const inner = media.closest('.comment-content-inner');
if (inner) {
media.addEventListener('load', () => checkOverflow(inner), { once: true });
media.addEventListener('loadedmetadata', () => checkOverflow(inner), { once: true });
const handler = () => checkOverflow(inner);
media.addEventListener('load', handler, { once: true });
media.addEventListener('error', handler, { once: true });
media.addEventListener('loadedmetadata', handler, { once: true });
// Also use ResizeObserver to catch layout changes (e.g. cached image layout deferred)
if (window.ResizeObserver) {
const ro = new ResizeObserver(() => checkOverflow(inner));
ro.observe(media);
}
}
});
};