Files
HomeDash/extension/firefox/detect.js
JianFeeeee ff0e6418f8 feat(nav): auto-detect browser extension and offer one-click install
导航页现在会自动检测浏览历史插件是否已安装:

- 扩展在用户配置的服务地址上动态注册 content script
  (Chrome: chrome.scripting.registerContentScripts,
   Firefox: browser.contentScripts.register),
  于 document_start 给 <html> 打上 data-navi-ext 标记,
  不在其他站点运行。
- history-server 始终把「安装浏览历史插件」放在「历史访问」第一条
  (入口 url=/extension/install.html),启动时也会重建一次,
  不再需要等下一次同步。
- web/navi.js 读到标记后隐藏该入口(连 .item-wrapper 一起隐藏,
  避免留下空网格位)。
- 新增 /extension/install.html:自动识别浏览器,给出对应安装包与步骤;
  支持在 data 卷放 extension-store.json 配置商店链接,
  有商店链接时显示真正的「一键安装」。
- 段落名匹配同时兼容中英文(常用服务/Favorites、历史访问/History),
  修掉了公开示例 conf.yml 用英文名时重建逻辑完全失效的问题。
- 扩展升到 1.1.0(新增 scripting 权限与 detect.js)。

Note: Chrome/Edge 不允许从网站直接安装非商店扩展,
因此自托管场景下只能下载后手动加载;发布到商店后才会出现一键安装。
2026-09-11 10:41:10 +08:00

21 lines
833 B
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// JianF Nav Sync — 检测标记(content script)
//
// 由 background 通过 browser.contentScripts.register 动态注册到
// 「用户在设置里填写的导航站」上,不会在其他网站上运行。
//
// 唯一职责:在 document_start 阶段给 <html> 打上 data-navi-ext 属性。
// 导航站的 /navi.js 读到该属性就隐藏「安装浏览历史插件」入口。
'use strict';
try {
let version = '1';
try {
if (typeof chrome !== 'undefined' && chrome.runtime && chrome.runtime.getManifest) {
version = chrome.runtime.getManifest().version || version;
}
} catch (e) { /* 忽略:版本号只用于展示 */ }
document.documentElement.setAttribute('data-navi-ext', version);
} catch (e) {
/* document_start 下 documentElement 一定存在;出错也只是少一个标记 */
}