feat(analytics): 添加不蒜子统计数据格式化功能
- 更新不蒜子统计元素 ID 配置 - 实现自动格式化脚本,支持 K/W/M 单位转换 - 添加对 Google 和腾讯分析配置的动态引用 - 替换博客链接为 Twitter 链接并更新图标 - 优化统计数据显示逻辑,处理禁用状态与数字格式化
This commit is contained in:
84
about.html
84
about.html
@@ -120,7 +120,7 @@
|
|||||||
<div class="social-dock desktop-social">
|
<div class="social-dock desktop-social">
|
||||||
<a href="https://github.com/listener-He" target="_blank" class="s-icon"><i class="ri-github-fill"></i></a>
|
<a href="https://github.com/listener-He" target="_blank" class="s-icon"><i class="ri-github-fill"></i></a>
|
||||||
<a href="mailto:hehouhui@foxmail.com" class="s-icon"><i class="ri-mail-send-fill"></i></a>
|
<a href="mailto:hehouhui@foxmail.com" class="s-icon"><i class="ri-mail-send-fill"></i></a>
|
||||||
<a href="https://blog.hehouhui.cn" target="_blank" class="s-icon"><i class="ri-pages-line"></i></a>
|
<a href="https://twitter.com/Honesty861024" target="_blank" class="s-icon"><i class="ri-twitter-line"></i></a>
|
||||||
<a href="https://www.zhihu.com/people/wen-xin-92-2-57" target="_blank" class="s-icon"><i class="ri-zhihu-line"></i></a>
|
<a href="https://www.zhihu.com/people/wen-xin-92-2-57" target="_blank" class="s-icon"><i class="ri-zhihu-line"></i></a>
|
||||||
<a href="javascript:void(0);" onclick="toggleWechat()" class="s-icon"><i class="ri-wechat-fill"></i></a>
|
<a href="javascript:void(0);" onclick="toggleWechat()" class="s-icon"><i class="ri-wechat-fill"></i></a>
|
||||||
<a href="https://juejin.cn/user/3659591622878503" target="_blank" class="s-icon"><i class="ri-code-box-line"></i></a>
|
<a href="https://juejin.cn/user/3659591622878503" target="_blank" class="s-icon"><i class="ri-code-box-line"></i></a>
|
||||||
@@ -155,11 +155,11 @@
|
|||||||
<span class="stat-key" data-i18n="stats.followers">Followers</span>
|
<span class="stat-key" data-i18n="stats.followers">Followers</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="stat-item">
|
<div class="stat-item">
|
||||||
<span class="stat-val neon-font" id="busuanzi_value_site_pv">0</span>
|
<span class="stat-val neon-font" id="busuanzi_site_pv">0</span>
|
||||||
<span class="stat-key" data-i18n="stats.visitNum">Visit num</span>
|
<span class="stat-key" data-i18n="stats.visitNum">Visit num</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="stat-item">
|
<div class="stat-item">
|
||||||
<span class="stat-val neon-font" id="busuanzi_value_site_uv">0</span>
|
<span class="stat-val neon-font" id="busuanzi_site_uv">0</span>
|
||||||
<span class="stat-key" data-i18n="stats.visitors">Visitors</span>
|
<span class="stat-key" data-i18n="stats.visitors">Visitors</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -238,7 +238,7 @@
|
|||||||
<div class="bento-card area-social-mobile mobile-social">
|
<div class="bento-card area-social-mobile mobile-social">
|
||||||
<a href="https://github.com/listener-He" class="ms-btn"><i class="ri-github-fill"></i></a>
|
<a href="https://github.com/listener-He" class="ms-btn"><i class="ri-github-fill"></i></a>
|
||||||
<a href="mailto:hehouhui@foxmail.com" class="ms-btn"><i class="ri-mail-send-fill"></i></a>
|
<a href="mailto:hehouhui@foxmail.com" class="ms-btn"><i class="ri-mail-send-fill"></i></a>
|
||||||
<a href="https://blog.hehouhui.cn" class="ms-btn"><i class="ri-pages-line"></i></a>
|
<a href="https://twitter.com/Honesty861024" class="ms-btn"><i class="ri-twitter-line"></i></a>
|
||||||
<a href="https://www.zhihu.com/people/wen-xin-92-2-57" class="ms-btn"><i class="ri-zhihu-line"></i></a>
|
<a href="https://www.zhihu.com/people/wen-xin-92-2-57" class="ms-btn"><i class="ri-zhihu-line"></i></a>
|
||||||
<a href="javascript:void(0);" onclick="toggleWechat()" class="ms-btn"><i class="ri-wechat-fill"></i></a>
|
<a href="javascript:void(0);" onclick="toggleWechat()" class="ms-btn"><i class="ri-wechat-fill"></i></a>
|
||||||
<a href="https://juejin.cn/user/3659591622878503" class="ms-btn"><i class="ri-code-box-line"></i></a>
|
<a href="https://juejin.cn/user/3659591622878503" class="ms-btn"><i class="ri-code-box-line"></i></a>
|
||||||
@@ -363,5 +363,81 @@
|
|||||||
|
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<!-- 自动格式化脚本 -->
|
||||||
|
<script>
|
||||||
|
// 核心格式化函数:支持 K / W / M,保留最多两位小数,去除尾随零
|
||||||
|
function formatWithUnit(num) {
|
||||||
|
if (num && num.indexOf('禁用') >= 0) {
|
||||||
|
return '-';
|
||||||
|
}
|
||||||
|
num = Number(num);
|
||||||
|
if (isNaN(num) || num < 0) return '0';
|
||||||
|
|
||||||
|
// 小于 1000:直接显示
|
||||||
|
if (num < 1_000) {
|
||||||
|
return Math.floor(num).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1K ~ 9.99K
|
||||||
|
if (num < 10_000) {
|
||||||
|
let val = (num / 1_000).toFixed(2);
|
||||||
|
return parseFloat(val) + 'K';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1W ~ 99.99W (1W = 10,000)
|
||||||
|
if (num < 1_000_000) {
|
||||||
|
let val = (num / 10_000).toFixed(2);
|
||||||
|
return parseFloat(val) + 'W';
|
||||||
|
}
|
||||||
|
|
||||||
|
// ≥ 1M
|
||||||
|
let val = (num / 1_000_000).toFixed(2);
|
||||||
|
return parseFloat(val) + 'M';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 监听不蒜子数据更新并格式化
|
||||||
|
function initFormatter() {
|
||||||
|
const pvEl = document.getElementById(SiteConfig.analytics.busuanzi.site_pv_id);
|
||||||
|
const uvEl = document.getElementById(SiteConfig.analytics.busuanzi.site_uv_id);
|
||||||
|
|
||||||
|
if (!pvEl && !uvEl) return;
|
||||||
|
console.log('[Busuanzi]', 'Formatting... Listener observer');
|
||||||
|
const observer = new MutationObserver(() => {
|
||||||
|
if (pvEl?.textContent) {
|
||||||
|
if (pvEl.textContent.includes('禁用')) {
|
||||||
|
pvEl.textContent = '-';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const raw = pvEl.textContent.trim().replace(/[,,]/g, '');
|
||||||
|
const num = parseFloat(raw);
|
||||||
|
if (!isNaN(num)) {
|
||||||
|
pvEl.textContent = formatWithUnit(num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (uvEl?.textContent) {
|
||||||
|
if (uvEl.textContent.includes('禁用')) {
|
||||||
|
uvEl.textContent = '-';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const raw = uvEl.textContent.trim().replace(/[,,]/g, '');
|
||||||
|
const num = parseFloat(raw);
|
||||||
|
if (!isNaN(num)) {
|
||||||
|
uvEl.textContent = formatWithUnit(num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (pvEl) observer.observe(pvEl, { childList: true, subtree: true });
|
||||||
|
if (uvEl) observer.observe(uvEl, { childList: true, subtree: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
// 启动
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('DOMContentLoaded', initFormatter);
|
||||||
|
} else {
|
||||||
|
initFormatter();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -392,7 +392,7 @@
|
|||||||
<!-- 可选:继续调用 config -->
|
<!-- 可选:继续调用 config -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
try {
|
try {
|
||||||
gtag('config', 'G-DYWDEVKDP0');
|
gtag('config', SiteConfig.analytics.google.id);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error("Google Analytics config 失败", e);
|
console.error("Google Analytics config 失败", e);
|
||||||
}
|
}
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
};
|
};
|
||||||
s.LA ? s.LA.ids && o() : (s.LA = p, s.LA.ids = [], o()), r.parentNode.insertBefore(n, r)
|
s.LA ? s.LA.ids && o() : (s.LA = p, s.LA.ids = [], o()), r.parentNode.insertBefore(n, r)
|
||||||
}()
|
}()
|
||||||
}({id: "3OBGjwDdEIRS7XZ1", ck: "3OBGjwDdEIRS7XZ1"});
|
}({id: SiteConfig.analytics.tencent.id, ck: SiteConfig.analytics.tencent.ck});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -134,8 +134,8 @@ const SiteConfig = {
|
|||||||
analytics: {
|
analytics: {
|
||||||
busuanzi: {
|
busuanzi: {
|
||||||
src: '//cdn.busuanzi.cc/busuanzi/3.6.9/busuanzi.abbr.min.js',
|
src: '//cdn.busuanzi.cc/busuanzi/3.6.9/busuanzi.abbr.min.js',
|
||||||
site_pv_id: 'busuanzi_value_site_pv',
|
site_pv_id: 'busuanzi_site_pv',
|
||||||
site_uv_id: 'busuanzi_value_site_uv',
|
site_uv_id: 'busuanzi_site_uv',
|
||||||
formatter: true
|
formatter: true
|
||||||
},
|
},
|
||||||
baidu: {
|
baidu: {
|
||||||
|
|||||||
Reference in New Issue
Block a user