diff --git a/icons/faviconDefault.svg b/icons/faviconDefault.svg new file mode 100644 index 0000000..83aee05 --- /dev/null +++ b/icons/faviconDefault.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/popup/config-list.ts b/src/popup/config-list.ts index 18896e3..570ae6e 100644 --- a/src/popup/config-list.ts +++ b/src/popup/config-list.ts @@ -137,18 +137,20 @@ export function initConfigList(ctx: PopupCtx) {
${displayName} ${enabledTag} ${authTag}
`; - // favicon + // favicon:优先存储值,再兜底 /favicon.ico,加载失败用默认占位图 const faviconSrc = cfg.favicon || faviconFallbackUrl(cfg.domain); + const favicon = document.createElement("img"); + favicon.className = "config-favicon"; + favicon.alt = ""; if (faviconSrc) { - const favicon = document.createElement("img"); - favicon.className = "config-favicon"; favicon.src = faviconSrc; - favicon.alt = ""; - favicon.addEventListener("error", () => { - favicon.style.display = "none"; - }); - item.appendChild(favicon); + } else { + favicon.src = chrome.runtime.getURL("icons/faviconDefault.svg"); } + favicon.addEventListener("error", () => { + favicon.src = chrome.runtime.getURL("icons/faviconDefault.svg"); + }); + item.appendChild(favicon); if (needsAuth) { const tag = info.querySelector(".tag-unauthorized");