diff options
| author | mayx <mayx@outlook.com> | 2026-05-27 02:37:23 +0000 |
|---|---|---|
| committer | mayx <mayx@outlook.com> | 2026-05-27 02:37:23 +0000 |
| commit | 156f964333ea9ca4d00d98f3c831ef05fe0b8d46 (patch) | |
| tree | 1952478c0e1e58f06ba3ac7b790377cdd4b8a8a8 | |
| parent | 481df19596b14612a5b1bc358d9514c8d4b490bb (diff) | |
- /_data/other_repo_list.csv
- /assets/js/main_new.js
- /assets/js/pjax.js
| -rw-r--r-- | _data/other_repo_list.csv | 14 | ||||
| -rw-r--r-- | assets/js/main_new.js | 13 | ||||
| -rw-r--r-- | assets/js/pjax.js | 49 |
3 files changed, 29 insertions, 47 deletions
diff --git a/_data/other_repo_list.csv b/_data/other_repo_list.csv index 4cc9989..65a3ad3 100644 --- a/_data/other_repo_list.csv +++ b/_data/other_repo_list.csv @@ -48,16 +48,13 @@ http://111.231.146.230:8418/mayx/blog https://git.pwaapp.cc/mayx/blog https://an360.top/mayx/blog http://106.15.78.64:3000/mayx/blog -https://git.wisder.net/mayx/blog http://111.119.244.185:3000/mayx/blog -http://110.41.179.36:13000/mayx/blog https://git.influxfin.com/mayx/blog http://219.157.255.213:25311/mayx/blog https://git.vekus.ru/mayx/blog http://116.204.75.78:6180/mayx/blog http://109.228.48.121:8000/mayx/blog http://27.124.12.222:3000/mayx/blog -https://git.sayndone.ru/mayx/blog https://gitea.hintsight.com/mayx/blog http://blackobelisk.xyz:3000/mayx/blog https://git.the-kn.com/mayx/blog @@ -166,7 +163,6 @@ http://210.245.20.73:3333/mayx/blog http://43.248.97.109:3000/mayx/blog http://113.207.86.104:3080/mayx/blog http://39.96.195.72:10082/mayx/blog -http://8.148.24.160:3000/mayx/blog https://221.219.181.35:30000/mayx/blog http://172.172.102.93:3000/mayx/blog http://115.120.245.164:3000/mayx/blog @@ -268,7 +264,6 @@ https://git.cenoq.com/mayx/blog http://8.152.205.35:3000/mayx/blog http://120.210.80.160:3000/mayx/blog http://1.95.192.200:59300/mayx/blog -https://git.medis.com.vn/mayx/blog http://194.5.152.156:3000/mayx/blog http://8.155.172.147:3001/mayx/blog https://git.erfmann.dev/mayx/blog @@ -359,7 +354,6 @@ https://git.veraskolivna.net/mayx/blog https://git.lifetop.net/mayx/blog https://gitea.jnyuxia.com/mayx/blog http://git.liuhung.com/mayx/blog -https://git.secretserver.club/mayx/blog https://gitea.adber.tech/mayx/blog https://gitea.hello.faith/mayx/blog https://tea.neuron.my/mayx/blog @@ -368,14 +362,12 @@ https://git.adityagupta.dev/mayx/blog https://git.danpeak.co.uk/mayx/blog https://gitea.mynas-lechner.de/mayx/blog https://git.automathon.org/mayx/blog -https://aeterna.cim.mcgill.ca/mayx/blog https://git.esen.gay/mayx/blog https://git.webtims.ru/mayx/blog https://gitea.personalsoftware.space/mayx/blog http://gitea.yiban.com.tw:3030/mayx/blog https://gitlab.iplusus.com/mayx/blog https://git.cyberuk.me/mayx/blog -https://git.privezishop.ru/mayx/blog https://gitea.zachl.tech/mayx/blog https://git.miasma-os.com/mayx/blog https://gitea.nacsity.cn/mayx/blog @@ -392,7 +384,6 @@ http://49.232.183.190:3000/mayx/blog_cn http://git.zxkedu.com:33769/mayx/blog_cn https://code.wemediacn.com/mayx/blog_cn https://gitea.shizuka.icu/mayx/blog_cn -http://43.139.2.237:3000/mayx/blog_cn http://51.159.198.233:3000/mayx/blog https://gitea.adriangonzalezbarbosa.eu/mayx/blog https://git.legatus.ru/mayx/blog @@ -439,7 +430,6 @@ http://47.117.245.9:17701/mayx/blog_cn https://git.sunlix.one/mayx/blog_cn http://47.106.222.181:20511/mayx/blog_cn http://101.43.95.130:3001/mayx/blog_cn -http://39.101.170.62:9080/mayx/blog_cn https://gitea.myat4.com/mayx/blog_cn http://118.24.161.24:3000/mayx/blog_cn http://githanea.s.odn.cc/mayx/blog_cn @@ -481,7 +471,6 @@ https://papi.tkpups.com/mayx/blog https://git.beyond-a-i.org/mayx/blog http://huanghomenas2.myqnapcloud.com:4000/mayx/blog_cn http://43.142.166.108:10082/mayx/blog_cn -https://git.ueda.sk/mayx/blog_cn https://tm-jikayo.com/mayx/blog_cn http://zzdgitea.stnav.com/mayx/blog_cn http://1.117.66.197:3000/mayx/blog_cn @@ -489,7 +478,6 @@ http://git.zhmight.com/mayx/blog_cn https://intl-dev.gaia888.com/mayx/blog_cn https://gitea.xinyuxi.com/mayx/blog_cn http://gitea.snailtrack.cn/mayx/blog_cn -https://git.powerdata.dk/mayx/blog http://ydds.cloud:3000/mayx/blog_cn http://120.24.50.145:3000/mayx/blog_cn https://code.draussenfunker.de/mayx/blog_cn @@ -528,7 +516,6 @@ https://gitea.molietech.com/mayx/blog_cn http://58.87.88.234:3000/mayx/blog_cn http://210.75.240.13:3000/mayx/blog_cn https://git.xz-i.com:30443/mayx/blog_cn -http://111.229.64.148:8080/mayx/blog_cn https://git.fynn.vip/mayx/blog_cn http://119.91.212.17:3000/mayx/blog_cn http://git.hbg99.com:8080/mayx/blog_cn @@ -540,3 +527,4 @@ https://git.extra.eiffel.com/mayx/blog https://gitea.digitanie.org/mayx/blog http://124.207.0.162:30000/mayx/blog https://git.xleed.com/mayx/blog +https://qlcodegitserver.online/mayx/blog diff --git a/assets/js/main_new.js b/assets/js/main_new.js index 22f2552..fc4b6ce 100644 --- a/assets/js/main_new.js +++ b/assets/js/main_new.js @@ -1,4 +1,8 @@ -$(function () { +/** + * 根据 URL ?kw= 参数高亮页面内匹配的关键词。 + * 提取为全局函数,供 pjax.js 在页面切换后复用,避免重复实现。 + */ +function highlightKeyword() { const urlParams = new URLSearchParams(window.location.search); const keyword = urlParams.get('kw')?.trim(); @@ -10,7 +14,7 @@ $(function () { const regex = new RegExp(`(${escapedKeyword})`, 'gi'); // 递归遍历并高亮文本节点 - const escapeHTML = str => str.replace(/[&<>"']/g, + const escapeHTML = str => str.replace(/[&<>"']/g, tag => ({ '&': '&', '<': '<', @@ -41,7 +45,7 @@ $(function () { $('section').each(function () { highlightTextNodes(this); }); -}); +}; function initCopyButtons() { $('.copy').remove(); @@ -58,6 +62,7 @@ function initCopyButtons() { }); } -$(function() { +$(function () { + highlightKeyword(); initCopyButtons(); });
\ No newline at end of file diff --git a/assets/js/pjax.js b/assets/js/pjax.js index 324087a..8f84322 100644 --- a/assets/js/pjax.js +++ b/assets/js/pjax.js @@ -23,34 +23,6 @@ } } - /** 关键词高亮 */ - function reinitHighlight() { - var keyword = new URLSearchParams(window.location.search).get('kw'); - if (!keyword) return; - keyword = keyword.trim(); - if (!keyword) return; - - var escaped = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - var regex = new RegExp('(' + escaped + ')', 'gi'); - var escapeHTML = function (str) { - return str.replace(/[&<>"']/g, function (t) { - return { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[t] || t; - }); - }; - function walk(node) { - $(node).contents().each(function () { - if (this.nodeType === Node.TEXT_NODE) { - var $t = $(this); - var text = escapeHTML($t.text()); - if (regex.test(text)) $t.replaceWith(text.replace(regex, '<mark>$1</mark>')); - } else if (this.nodeType === Node.ELEMENT_NODE && !$(this).is('script, style, noscript, textarea')) { - walk(this); - } - }); - } - $('section').each(function () { walk(this); }); - } - /** Google Analytics 页面浏览事件 */ function trackPageView() { if (typeof gtag === 'function') { @@ -120,15 +92,32 @@ // ========== 初始化 ========== + /** pjax 完成后滚动到目标位置:有锚点则定位锚点,否则回到顶部 */ + function scrollToAnchor() { + var hash = window.location.hash; + if (hash) { + // 中文等非 ASCII 字符在 URL 中会被编码,需先解码再匹配元素 id + var id = hash.slice(1); + try { id = decodeURIComponent(id); } catch (e) { /* 保持原值 */ } + var target = document.getElementById(id) || + document.querySelector('a[name="' + id + '"]'); + if (target) { + target.scrollIntoView({ behavior: 'smooth', block: 'start' }); + return; + } + } + window.scrollTo(0, 0); + } + /** 每次 pjax 完成后执行所有重初始化 */ function onPjaxComplete() { initVisitors(); initCopyButtons(); - reinitHighlight(); + highlightKeyword(); reinitAISummary(); reinitLive2d(); trackPageView(); - window.scrollTo(0, 0); + scrollToAnchor(); } $(document).ready(function () { |
