mirror of https://github.com/Mabbs/mabbs.github.io
				
				
				
			Update 3 files
- /assets/js/main.js - /assets/js/main_new.js - /_layouts/default.htmlpull/171/head
							parent
							
								
									97e0ef3c81
								
							
						
					
					
						commit
						ac554c5535
					
				|  | @ -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]--> | ||||
|  |  | |||
|  | @ -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() { | ||||
|         $(".visitors-index").each(function() { | ||||
|             var $elem = $(this); | ||||
|             $.get(BlogAPI + "/count_click?id=" + $elem.attr('id'), function(data) { | ||||
|                 $elem.text(Number(data)); | ||||
|             }); | ||||
|         }); | ||||
|     } | ||||
|     function showHitCount() { | ||||
|         var visitors = $(".visitors-index"); | ||||
|         for (var i = 0; i < visitors.length; i++) { | ||||
|             showHitS(visitors[i]); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
|      | ||||
|     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); | ||||
|  |  | |||
|  | @ -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); | ||||
|         }); | ||||
|     }); | ||||
| }); | ||||
		Loading…
	
		Reference in New Issue