夜间模式
This commit is contained in:
+45
-5
@@ -109,6 +109,38 @@ function renderTalks() {
|
||||
waterfall('#talk');
|
||||
};
|
||||
|
||||
const withImageParams = (url) => {
|
||||
if (!url) return '';
|
||||
try {
|
||||
const parsedUrl = new URL(url, window.location.origin);
|
||||
if (!parsedUrl.searchParams.has('fmt')) parsedUrl.searchParams.set('fmt', 'webp');
|
||||
if (!parsedUrl.searchParams.has('q')) parsedUrl.searchParams.set('q', '75');
|
||||
return parsedUrl.toString();
|
||||
} catch {
|
||||
return url;
|
||||
}
|
||||
};
|
||||
|
||||
const getImageUrl = (image) => {
|
||||
if (!image) return '';
|
||||
if (typeof image === 'string') return image;
|
||||
return image.image_url || image.url || image.src || image.file?.url || '';
|
||||
};
|
||||
|
||||
const getTalkImages = (item) => {
|
||||
if (Array.isArray(item.images) && item.images.length > 0) {
|
||||
return item.images.map(getImageUrl).filter(Boolean);
|
||||
}
|
||||
|
||||
if (Array.isArray(item.echo_files) && item.echo_files.length > 0) {
|
||||
return item.echo_files
|
||||
.map((echoFile) => getImageUrl(echoFile.file || echoFile))
|
||||
.filter(Boolean);
|
||||
}
|
||||
|
||||
return [];
|
||||
};
|
||||
|
||||
const formatTalk = (item) => {
|
||||
const date = formatTime(item.created_at);
|
||||
let content = item.content || '';
|
||||
@@ -119,16 +151,20 @@ function renderTalks() {
|
||||
content = `<div class="talk_content_text">${content}</div>`;
|
||||
|
||||
// 图片
|
||||
if (Array.isArray(item.images) && item.images.length > 0) {
|
||||
const images = getTalkImages(item);
|
||||
if (images.length > 0) {
|
||||
const imgDiv = document.createElement('div');
|
||||
imgDiv.className = 'zone_imgbox';
|
||||
item.images.forEach(img => {
|
||||
images.forEach(url => {
|
||||
const imageUrl = withImageParams(url);
|
||||
const link = document.createElement('a');
|
||||
link.href = img.image_url + "?fmt=webp&q=75";
|
||||
link.href = imageUrl;
|
||||
link.setAttribute('data-fancybox', 'gallery');
|
||||
link.className = 'fancybox';
|
||||
const imgTag = document.createElement('img');
|
||||
imgTag.src = img.image_url + "?fmt=webp&q=75";
|
||||
imgTag.src = imageUrl;
|
||||
imgTag.loading = 'lazy';
|
||||
imgTag.alt = '';
|
||||
link.appendChild(imgTag);
|
||||
imgDiv.appendChild(link);
|
||||
});
|
||||
@@ -302,8 +338,12 @@ function renderTalks() {
|
||||
};
|
||||
|
||||
const formatTime = (time) => {
|
||||
const d = new Date(time);
|
||||
const timestamp = Number(time);
|
||||
const d = Number.isFinite(timestamp)
|
||||
? new Date(timestamp < 100000000000 ? timestamp * 1000 : timestamp)
|
||||
: new Date(time);
|
||||
const pad = (n) => n.toString().padStart(2, '0');
|
||||
if (Number.isNaN(d.getTime())) return '';
|
||||
return `${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}`;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user