mirror of
				https://github.com/Mabbs/mabbs.github.io
				synced 2025-11-03 10:43:01 +08:00 
			
		
		
		
	Update 2 files
- /js/main.js - /search.html
This commit is contained in:
		
							parent
							
								
									eee3103f93
								
							
						
					
					
						commit
						1b4fd0de9b
					
				
							
								
								
									
										44
									
								
								js/main.js
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								js/main.js
									
									
									
									
									
								
							@ -41,6 +41,50 @@ $(function () {
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
$(function() {
 | 
			
		||||
    function getQueryVariable(variable){
 | 
			
		||||
           var query = window.location.search.substring(1);
 | 
			
		||||
           var vars = query.split("&");
 | 
			
		||||
           for (var i=0;i<vars.length;i++) {
 | 
			
		||||
                   var pair = vars[i].split("=");
 | 
			
		||||
                   if(pair[0] == variable){return pair[1];}
 | 
			
		||||
           }
 | 
			
		||||
           return(false);
 | 
			
		||||
    }
 | 
			
		||||
    var keyword = decodeURI(getQueryVariable("kw"));
 | 
			
		||||
 | 
			
		||||
    if (!keyword) return;
 | 
			
		||||
 | 
			
		||||
    // 转义正则表达式特殊字符,避免安全问题
 | 
			
		||||
    const escapedKeyword = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
 | 
			
		||||
    // 创建不区分大小写的正则表达式(全局匹配)
 | 
			
		||||
    const regex = new RegExp(`(${escapedKeyword})`, 'gi');
 | 
			
		||||
 | 
			
		||||
    // 递归遍历并高亮文本节点
 | 
			
		||||
    function highlightTextNodes(element) {
 | 
			
		||||
        $(element).contents().each(function() {
 | 
			
		||||
            if (this.nodeType === Node.TEXT_NODE) {
 | 
			
		||||
                const $this = $(this);
 | 
			
		||||
                const text = $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);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
today = new Date();
 | 
			
		||||
timeold = (today.getTime() - lastUpdated.getTime());
 | 
			
		||||
secondsold = Math.floor(timeold / 1000);
 | 
			
		||||
 | 
			
		||||
@ -8,8 +8,7 @@ title: 搜索
 | 
			
		||||
<ul id="results-container"></ul>
 | 
			
		||||
<script src="/js/simple-jekyll-search.min.js"></script>
 | 
			
		||||
<script>
 | 
			
		||||
function getQueryVariable(variable)
 | 
			
		||||
{
 | 
			
		||||
function getQueryVariable(variable){
 | 
			
		||||
       var query = window.location.search.substring(1);
 | 
			
		||||
       var vars = query.split("&");
 | 
			
		||||
       for (var i=0;i<vars.length;i++) {
 | 
			
		||||
@ -29,7 +28,7 @@ getSearchJSON(function(json){
 | 
			
		||||
     searchInput: sbox,
 | 
			
		||||
     resultsContainer: document.getElementById('results-container'),
 | 
			
		||||
     json: json,
 | 
			
		||||
     searchResultTemplate: '<p><li>{date} - <a href="{url}">{title}</a></li></p>',
 | 
			
		||||
     searchResultTemplate: '<p><li>{date} - <a href="{url}?kw={query}">{title}</a></li></p>',
 | 
			
		||||
     limit: 20
 | 
			
		||||
  });
 | 
			
		||||
  sjs.search(mykeyword);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user