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) {
|
||||
return String(s)
|
||||
.replaceAll("&", "&")
|
||||
@@ -261,13 +270,18 @@
|
||||
const letter = escapeHtml((link.title || domain || "L").trim().slice(0, 1).toUpperCase());
|
||||
const lockAttr = state.canManage ? "" : ' disabled aria-disabled="true"';
|
||||
const lockTitle = state.canManage ? "" : ' title="관리 기능은 로그인 후 사용 가능합니다."';
|
||||
const fav = faviconUrl(link.url);
|
||||
|
||||
return `
|
||||
<article class="card" data-id="${escapeHtml(link.id)}">
|
||||
<div class="card-head">
|
||||
<div class="card-title">
|
||||
<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 class="title-wrap">
|
||||
<div class="title" title="${title}">${title}</div>
|
||||
|
||||
Reference in New Issue
Block a user