feat: 实现MeNav浏览器扩展支持接口

为支持浏览器扩展的HTML替换方案,对原仓库进行以下修改:
- 在generator.js中添加配置数据序列化和嵌入功能
- 在default.hbs中添加配置数据存储元素
- 在site-card.hbs和category.hbs中添加数据属性标识符
- 在script.js中添加全局MeNav对象和API方法
This commit is contained in:
Zuoling Rong
2025-05-22 22:58:02 +08:00
parent b7edd1dcbf
commit c72f7fd9f5
5 changed files with 432 additions and 220 deletions

View File

@@ -1,6 +1,6 @@
<section class="category" id="{{name}}">
<section class="category" id="{{name}}" data-menav-id="category-{{@index}}" data-menav-type="category">
<h2><i class="{{icon}}"></i> {{name}}</h2>
<div class="sites-grid">
<div class="sites-grid" data-menav-category="{{name}}">
{{#if sites.length}}
{{#each sites}}
{{> site-card}}
@@ -9,4 +9,4 @@
<p class="empty-sites">暂无网站</p>
{{/if}}
</div>
</section>
</section>

View File

@@ -1,7 +1,12 @@
{{#if url}}
<a href="{{url}}" class="site-card{{#if style}} site-card-{{style}}{{/if}}" title="{{name}} - {{#if description}}{{description}}{{else}}{{url}}{{/if}}" {{#if external}}target="_blank" rel="noopener"{{/if}}>
<a href="{{url}}" class="site-card{{#if style}} site-card-{{style}}{{/if}}"
title="{{name}} - {{#if description}}{{description}}{{else}}{{url}}{{/if}}"
{{#if external}}target="_blank" rel="noopener"{{/if}}
data-menav-id="site-{{@index}}"
data-menav-type="site"
data-menav-category="{{../name}}">
<i class="{{#if icon}}{{icon}}{{else}}fas fa-link{{/if}}"></i>
<h3>{{#if name}}{{name}}{{else}}未命名站点{{/if}}</h3>
<p>{{#if description}}{{description}}{{else}}{{url}}{{/if}}</p>
</a>
{{/if}}
{{/if}}

View File

@@ -18,14 +18,14 @@
if (savedTheme === 'light') {
document.documentElement.classList.add('theme-preload');
}
// 读取并应用侧边栏状态
var sidebarCollapsed = localStorage.getItem('sidebarCollapsed') === 'true';
var isMobile = window.innerWidth <= 768;
if (sidebarCollapsed && !isMobile) {
document.documentElement.classList.add('sidebar-collapsed-preload');
}
// 添加这个类用于控制初始渲染
document.documentElement.classList.add('preload');
})();
@@ -58,7 +58,7 @@
<i class="fas fa-chevron-left toggle-icon"></i>
</button>
</div>
<div class="sidebar-content">
<div class="nav-section">
{{#if navigationData}}
@@ -117,12 +117,16 @@
</div>
{{/each}}
</main>
<!-- 主题切换按钮 -->
<button class="theme-toggle" aria-label="切换主题">
<i class="fas fa-moon"></i>
</button>
</div>
<!-- 配置数据 - 用于浏览器扩展 -->
<script id="menav-config-data" type="application/json" style="display: none;">
{{{configJSON}}}
</script>
<script src="script.js"></script>
</body>
</html>
</html>