mirror of
				https://github.com/Mabbs/mabbs.github.io
				synced 2025-11-04 15:02:11 +08:00 
			
		
		
		
	Update 3 files
- /assets/js/main.js - /assets/js/main_new.js - /_layouts/default.html
This commit is contained in:
		
							parent
							
								
									97e0ef3c81
								
							
						
					
					
						commit
						ac554c5535
					
				@ -20,8 +20,8 @@
 | 
				
			|||||||
    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
 | 
					    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
 | 
				
			||||||
  <![endif]-->
 | 
					  <![endif]-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!--[if !IE]> -->
 | 
					 | 
				
			||||||
  <script src="/assets/js/jquery.min.js"></script>
 | 
					  <script src="/assets/js/jquery.min.js"></script>
 | 
				
			||||||
 | 
					  <!--[if !IE]> -->
 | 
				
			||||||
  {% if site.google_analytics %}
 | 
					  {% if site.google_analytics %}
 | 
				
			||||||
  <!-- Global site tag (gtag.js) - Google Analytics -->
 | 
					  <!-- Global site tag (gtag.js) - Google Analytics -->
 | 
				
			||||||
  <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
 | 
					  <script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
 | 
				
			||||||
@ -141,8 +141,9 @@
 | 
				
			|||||||
    </footer>
 | 
					    </footer>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <script src="{{ "/assets/js/scale.fix.js" | relative_url }}"></script>
 | 
					  <script src="{{ "/assets/js/scale.fix.js" | relative_url }}"></script>
 | 
				
			||||||
  <!--[if !IE]> -->
 | 
					 | 
				
			||||||
  <script src="/assets/js/main.js"></script>
 | 
					  <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/live2d.js"></script>
 | 
				
			||||||
  <script src="/Live2dHistoire/live2d/js/message.js"></script>
 | 
					  <script src="/Live2dHistoire/live2d/js/message.js"></script>
 | 
				
			||||||
  <!-- <![endif]-->
 | 
					  <!-- <![endif]-->
 | 
				
			||||||
 | 
				
			|||||||
@ -13,28 +13,19 @@ var talkAPI = BlogAPI + "/ai_chat";
 | 
				
			|||||||
    $(function () { $backToTopFun(); });
 | 
					    $(function () { $backToTopFun(); });
 | 
				
			||||||
})();
 | 
					})();
 | 
				
			||||||
$(function () {
 | 
					$(function () {
 | 
				
			||||||
    $("div#landlord").mouseenter(function () {
 | 
					    function showHitCount() {
 | 
				
			||||||
        $("div.live_ico_box").fadeIn();
 | 
					        $(".visitors-index").each(function() {
 | 
				
			||||||
    });
 | 
					            var $elem = $(this);
 | 
				
			||||||
    $("div#landlord").mouseleave(function () {
 | 
					            $.get(BlogAPI + "/count_click?id=" + $elem.attr('id'), function(data) {
 | 
				
			||||||
        $("div.live_ico_box").fadeOut();
 | 
					                $elem.text(Number(data));
 | 
				
			||||||
    });
 | 
					            });
 | 
				
			||||||
    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]);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    function addCount() {
 | 
					    function addCount() {
 | 
				
			||||||
        var visitors = $(".visitors");
 | 
					        var $visitor = $(".visitors:first");
 | 
				
			||||||
        $.get(BlogAPI + "/count_click_add?id=" + visitors[0].id, function (data) {
 | 
					        $.get(BlogAPI + "/count_click_add?id=" + $visitor.attr('id'), function(data) {
 | 
				
			||||||
            visitors[0].innerHTML = Number(data);
 | 
					            $visitor.text(Number(data));
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ($('.visitors').length == 1) {
 | 
					    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();
 | 
					today = new Date();
 | 
				
			||||||
timeold = (today.getTime() - lastUpdated.getTime());
 | 
					timeold = (today.getTime() - lastUpdated.getTime());
 | 
				
			||||||
secondsold = Math.floor(timeold / 1000);
 | 
					secondsold = Math.floor(timeold / 1000);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										78
									
								
								assets/js/main_new.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								assets/js/main_new.js
									
									
									
									
									
										Normal file
									
								
							@ -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
	
	Block a user