老大能不能给这个动作加入获取网页的图标,让弹出的网页可以显示原来的图标呢

功能建议 · 714 次浏览
wlioi 创建于 2023-02-10 20:47

如题~


回复内容
CL 2023-02-10 20:49
#1

网页图标是浏览器自己控制的哦。

wlioi 回复 CL 2023-02-10 20:53 :

浏览器上是原来的图标,任务栏上是quicker的图标

CL 回复 wlioi 2023-02-10 20:56 :

其它网站页面弹窗不可能显示quicker图标的。录个屏我看看?

Kenhalid 回复 CL 21天13小时前 :

我发现此种通过创建窗口的方式,任务栏图标为 Quicker 插件图标


而用 app 模式打开网址,比如您的动作:https://getquicker.net/Sharedaction?code=0903be2c-c1a2-4533-3d55-08d915d5fc6d,任务栏图标为网站的 favicon

但是前者无需重新加载网页,对于正在编辑的网页,重新加载会导致编辑内容丢失;后者需要重新加载网页

因此,能否有一种方法,能够实现 app 模式的切换而非重新加载。我自己没找到相应办法,特来请教一下

Kenhalid 最后更新于 21天13小时前
CL 回复 Kenhalid 21天7小时前 :

查了一下并且问了AI,似乎确实没有办法控制这个任务栏图标。


短答案:做不到。
Chrome 扩展 API 里没有能把“窗口在任务栏上的图标”改成某个标签页 favicon 的接口。chrome.action.setIcon 只能改扩展按钮图标,和任务栏无关;chrome.windows.* 也不提供设置窗口图标的能力。

你现在看到任务栏用“扩展图标”,通常是因为用 chrome.windows.create({type: 'popup', url: chrome-extension://...}) 或首个标签是扩展页,Chrome 会把这个窗口归为扩展“应用”并用扩展图标。想避免这一点,只有这些变通:

  1. 用普通浏览器窗体
    type 设为 'normal',并确保首个 tab 是网站页面而不是扩展页。例如,把已有 tab 弹出到新窗口:

chrome.tabs.query({active: true, lastFocusedWindow: true}, ([tab]) => {
  if (!tab) return;
  chrome.windows.create({
    tabId: tab.id,      // 直接把当前网页标签弹出
    type: 'normal'      // 关键:normal 而不是 popup
    // state: 'maximized'
  });
});

这样任务栏图标会是 Chrome 的程序图标(不是 favicon,但至少不会是扩展图标)。

  1. 想让任务栏显示站点自己的图标
    这在 Chrome 里也不支持。任务栏图标来自应用本身(chrome.exe 或扩展“应用”),不是网页 favicon。只有把站点安装为 PWA(“安装此站点为应用”)才会用站点图标,但扩展代码无法把任意窗口的任务栏图标改成某个 tab 的 favicon。

  2. 需要完全自定义任务栏图标
    只能换技术栈(例如 Electron / CEF / 原生壳 + WebView),在宿主层设置窗口图标或使用 Windows 的 Taskbar API;Chrome 扩展无法做到。

顺带:你可以拿到 tab 的 favIconUrltabs.Tab.favIconUrl),但这只能用来显示在你自己的 UI 里,不能拿去当任务栏图标。

回复主贴