Restore favicons using site /favicon.ico
Show each link's favicon from its origin instead of letter-only badges. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
16
script.js
16
script.js
@@ -131,6 +131,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function faviconUrl(url) {
|
||||||
|
try {
|
||||||
|
const u = new URL(url);
|
||||||
|
return `${u.origin}/favicon.ico`;
|
||||||
|
} catch {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function escapeHtml(s) {
|
function escapeHtml(s) {
|
||||||
return String(s)
|
return String(s)
|
||||||
.replaceAll("&", "&")
|
.replaceAll("&", "&")
|
||||||
@@ -261,13 +270,18 @@
|
|||||||
const letter = escapeHtml((link.title || domain || "L").trim().slice(0, 1).toUpperCase());
|
const letter = escapeHtml((link.title || domain || "L").trim().slice(0, 1).toUpperCase());
|
||||||
const lockAttr = state.canManage ? "" : ' disabled aria-disabled="true"';
|
const lockAttr = state.canManage ? "" : ' disabled aria-disabled="true"';
|
||||||
const lockTitle = state.canManage ? "" : ' title="관리 기능은 로그인 후 사용 가능합니다."';
|
const lockTitle = state.canManage ? "" : ' title="관리 기능은 로그인 후 사용 가능합니다."';
|
||||||
|
const fav = faviconUrl(link.url);
|
||||||
|
|
||||||
return `
|
return `
|
||||||
<article class="card" data-id="${escapeHtml(link.id)}">
|
<article class="card" data-id="${escapeHtml(link.id)}">
|
||||||
<div class="card-head">
|
<div class="card-head">
|
||||||
<div class="card-title">
|
<div class="card-title">
|
||||||
<div class="favicon" aria-hidden="true">
|
<div class="favicon" aria-hidden="true">
|
||||||
<div class="letter">${letter}</div>
|
${
|
||||||
|
fav
|
||||||
|
? `<img src="${escapeHtml(fav)}" alt="" loading="lazy" decoding="async" referrerpolicy="no-referrer" onerror="this.remove(); this.parentNode.insertAdjacentHTML('beforeend','<div class="letter">${letter}</div>');" />`
|
||||||
|
: `<div class="letter">${letter}</div>`
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="title-wrap">
|
<div class="title-wrap">
|
||||||
<div class="title" title="${title}">${title}</div>
|
<div class="title" title="${title}">${title}</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user