mirror of
				https://github.com/Mabbs/mabbs.github.io
				synced 2025-11-04 08:42: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>
 | 
			
		||||
  <![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);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										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