mirror of
https://www.gitlink.org.cn/mayx/mayx.gitlink.net
synced 2026-06-01 16:43:44 +08:00
Update 2 files
- /index.html - /assets/js/main_new.js
This commit is contained in:
@@ -1,51 +1,21 @@
|
|||||||
/**
|
|
||||||
* 根据 URL ?kw= 参数高亮页面内匹配的关键词。
|
|
||||||
* 提取为全局函数,供 pjax.js 在页面切换后复用,避免重复实现。
|
|
||||||
*/
|
|
||||||
function highlightKeyword() {
|
function highlightKeyword() {
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
var match = location.search.match(/[?&]kw=([^&]+)/);
|
||||||
const keyword = urlParams.get('kw')?.trim();
|
var kw = match ? $.trim(decodeURIComponent(match[1].replace(/\+/g, ' '))) : '';
|
||||||
|
if (!kw) return;
|
||||||
|
|
||||||
if (!keyword) return;
|
var reg = new RegExp('(' + kw.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'gi');
|
||||||
|
var escapeMap = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' };
|
||||||
|
|
||||||
// 转义正则表达式特殊字符,避免安全问题
|
$('section, section *').not('script, style, textarea').contents().filter(function() {
|
||||||
const escapedKeyword = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
return this.nodeType === 3;
|
||||||
// 创建不区分大小写的正则表达式(全局匹配)
|
}).each(function() {
|
||||||
const regex = new RegExp(`(${escapedKeyword})`, 'gi');
|
var escapedText = this.nodeValue.replace(/[&<>"']/g, function(m) { return escapeMap[m]; });
|
||||||
|
var highlighted = escapedText.replace(reg, '<mark>$1</mark>');
|
||||||
// 递归遍历并高亮文本节点
|
if (escapedText !== highlighted) {
|
||||||
const escapeHTML = str => str.replace(/[&<>"']/g,
|
$(this).replaceWith(highlighted);
|
||||||
tag => ({
|
}
|
||||||
'&': '&',
|
|
||||||
'<': '<',
|
|
||||||
'>': '>',
|
|
||||||
'"': '"',
|
|
||||||
"'": '''
|
|
||||||
}[tag] || tag));
|
|
||||||
function highlightTextNodes(element) {
|
|
||||||
$(element).contents().each(function () {
|
|
||||||
if (this.nodeType === Node.TEXT_NODE) {
|
|
||||||
const $this = $(this);
|
|
||||||
const text = escapeHTML($this.text());
|
|
||||||
|
|
||||||
// 使用正则替换并保留原始大小写
|
|
||||||
if (regex.test(text)) {
|
|
||||||
const replaced = text.replace(regex, '<mark>$1</mark>');
|
|
||||||
$this.replaceWith(replaced);
|
|
||||||
}
|
|
||||||
} else if (
|
|
||||||
this.nodeType === Node.ELEMENT_NODE &&
|
|
||||||
!$(this).is('script, style, noscript, textarea')
|
|
||||||
) {
|
|
||||||
highlightTextNodes(this);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
$('section').each(function () {
|
|
||||||
highlightTextNodes(this);
|
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
|
|
||||||
function initCopyButtons() {
|
function initCopyButtons() {
|
||||||
$('.copy').remove();
|
$('.copy').remove();
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ image: https://screenshot.mayx.eu.org/
|
|||||||
<!-- 遍历分页后的文章 -->
|
<!-- 遍历分页后的文章 -->
|
||||||
<table class="entry-content h-feed">
|
<table class="entry-content h-feed">
|
||||||
{% for post in paginator.posts %}
|
{% for post in paginator.posts %}
|
||||||
<tr><td class="h-entry" data-url="{{ post.url }}">
|
<tr><td class="h-entry post-row" data-url="{{ post.url }}">
|
||||||
<h2 class="p-name"><a class="post-link u-url" href="{{ post.url }}">{{ post.title }}{% if post.layout == "encrypt" %} [加密] {% endif %}</a></h2>
|
<h2 class="p-name"><a class="post-link u-url" href="{{ post.url }}">{{ post.title }}{% if post.layout == "encrypt" %} [加密] {% endif %}</a></h2>
|
||||||
<p>
|
<p>
|
||||||
<time class="date dt-published" datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date: "%-d %B %Y" }}</time>
|
<time class="date dt-published" datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date: "%-d %B %Y" }}</time>
|
||||||
@@ -79,7 +79,7 @@ image: https://screenshot.mayx.eu.org/
|
|||||||
<a href="https://xn--sr8hvo.ws/next">→</a><br /><a href="https://icp.gov.moe/?keyword=20218888" target="_blank">萌ICP备 20218888号</a></small>
|
<a href="https://xn--sr8hvo.ws/next">→</a><br /><a href="https://icp.gov.moe/?keyword=20218888" target="_blank">萌ICP备 20218888号</a></small>
|
||||||
<input name="live2dBGM" value="https://music.163.com/song/media/outer/url?id=523658881.mp3" type="hidden" />
|
<input name="live2dBGM" value="https://music.163.com/song/media/outer/url?id=523658881.mp3" type="hidden" />
|
||||||
<script>
|
<script>
|
||||||
$(document).on('click', '.h-entry', function(e) {
|
$(document).on('click', '.post-row', function(e) {
|
||||||
if ($(e.target).closest('.p-category').length === 0) {
|
if ($(e.target).closest('.p-category').length === 0) {
|
||||||
go($(this).attr('data-url'));
|
go($(this).attr('data-url'));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user