diff options
author | mayx | 2025-05-11 16:12:22 +0000 |
---|---|---|
committer | mayx | 2025-05-11 16:12:22 +0000 |
commit | ac554c55359912bf8928b51d6692f9d8fbd8c6b9 (patch) | |
tree | 294e9c4e1fe230c03d296ea05c7ff1c6ae4b19a9 | |
parent | 97e0ef3c8176e0490030a3a48c0c613eef0af4d3 (diff) |
Update 3 files
- /assets/js/main.js - /assets/js/main_new.js - /_layouts/default.html
-rw-r--r-- | _layouts/default.html | 5 | ||||
-rw-r--r-- | assets/js/main.js | 102 | ||||
-rw-r--r-- | assets/js/main_new.js | 78 |
3 files changed, 91 insertions, 94 deletions
diff --git a/_layouts/default.html b/_layouts/default.html index 37f81c0..b2691a0 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -20,8 +20,8 @@ <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script> <![endif]--> - <!--[if !IE]> --> <script src="/assets/js/jquery.min.js"></script> + <!--[if !IE]> --> {% if site.google_analytics %} <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script> @@ -141,8 +141,9 @@ </footer> </div> <script src="{{ "/assets/js/scale.fix.js" | relative_url }}"></script> - <!--[if !IE]> --> <script src="/assets/js/main.js"></script> + <!--[if !IE]> --> + <script src="/assets/js/main_new.js"></script> <script src="/Live2dHistoire/live2d/js/live2d.js"></script> <script src="/Live2dHistoire/live2d/js/message.js"></script> <!-- <![endif]--> diff --git a/assets/js/main.js b/assets/js/main.js index 644e2b6..3a17db6 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -13,28 +13,19 @@ var talkAPI = BlogAPI + "/ai_chat"; $(function () { $backToTopFun(); }); })(); $(function () { - $("div#landlord").mouseenter(function () { - $("div.live_ico_box").fadeIn(); - }); - $("div#landlord").mouseleave(function () { - $("div.live_ico_box").fadeOut(); - }); - function showHitS(hits) { - $.get(BlogAPI + "/count_click?id=" + hits.id, function (data) { - hits.innerHTML = Number(data); - }); - } function showHitCount() { - var visitors = $(".visitors-index"); - for (var i = 0; i < visitors.length; i++) { - showHitS(visitors[i]); - } - + $(".visitors-index").each(function() { + var $elem = $(this); + $.get(BlogAPI + "/count_click?id=" + $elem.attr('id'), function(data) { + $elem.text(Number(data)); + }); + }); } + function addCount() { - var visitors = $(".visitors"); - $.get(BlogAPI + "/count_click_add?id=" + visitors[0].id, function (data) { - visitors[0].innerHTML = Number(data); + var $visitor = $(".visitors:first"); + $.get(BlogAPI + "/count_click_add?id=" + $visitor.attr('id'), function(data) { + $visitor.text(Number(data)); }); } if ($('.visitors').length == 1) { @@ -44,79 +35,6 @@ $(function () { } }); -$(function () { - const urlParams = new URLSearchParams(window.location.search); - const keyword = urlParams.get('kw')?.trim(); - - if (!keyword) return; - - // 转义正则表达式特殊字符,避免安全问题 - const escapedKeyword = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - // 创建不区分大小写的正则表达式(全局匹配) - const regex = new RegExp(`(${escapedKeyword})`, 'gi'); - - // 递归遍历并高亮文本节点 - const escapeHTML = str => str.replace(/[&<>"']/g, - 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 () { - var codeBlocks = document.querySelectorAll('div.highlight'); - - codeBlocks.forEach(function (codeBlock) { - var copyButton = document.createElement('button'); - copyButton.className = 'copy'; - copyButton.type = 'button'; - copyButton.innerText = '📋'; - - codeBlock.append(copyButton); - - copyButton.addEventListener('click', function () { - var code = codeBlock.querySelector('pre code').innerText.trim(); - window.navigator.clipboard.writeText(code) - .then(() => { - copyButton.innerText = '✅'; - }) - .catch(err => { - copyButton.innerText = '❌'; - console.error('Failed to copy:', err); - }); - - setTimeout(function () { - copyButton.innerText = '📋'; - }, 1500); - }); - }); -}); - today = new Date(); timeold = (today.getTime() - lastUpdated.getTime()); secondsold = Math.floor(timeold / 1000); diff --git a/assets/js/main_new.js b/assets/js/main_new.js new file mode 100644 index 0000000..fd0170f --- /dev/null +++ b/assets/js/main_new.js @@ -0,0 +1,78 @@ +$(function () { + $("div#landlord").mouseenter(function () { + $("div.live_ico_box").fadeIn(); + }); + $("div#landlord").mouseleave(function () { + $("div.live_ico_box").fadeOut(); + }); + + const urlParams = new URLSearchParams(window.location.search); + const keyword = urlParams.get('kw')?.trim(); + + if (!keyword) return; + + // 转义正则表达式特殊字符,避免安全问题 + const escapedKeyword = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + // 创建不区分大小写的正则表达式(全局匹配) + const regex = new RegExp(`(${escapedKeyword})`, 'gi'); + + // 递归遍历并高亮文本节点 + const escapeHTML = str => str.replace(/[&<>"']/g, + 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); + }); + + var codeBlocks = document.querySelectorAll('div.highlight'); + + codeBlocks.forEach(function (codeBlock) { + var copyButton = document.createElement('button'); + copyButton.className = 'copy'; + copyButton.type = 'button'; + copyButton.innerText = '📋'; + + codeBlock.append(copyButton); + + copyButton.addEventListener('click', function () { + var code = codeBlock.querySelector('pre code').innerText.trim(); + window.navigator.clipboard.writeText(code) + .then(() => { + copyButton.innerText = '✅'; + }) + .catch(err => { + copyButton.innerText = '❌'; + console.error('Failed to copy:', err); + }); + + setTimeout(function () { + copyButton.innerText = '📋'; + }, 1500); + }); + }); +}); \ No newline at end of file |