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");