mirror of
				https://github.com/Mabbs/mabbs.github.io
				synced 2025-11-04 02:24:35 +00:00 
			
		
		
		
	Update 2 files
- /js/main.js - /search.html
This commit is contained in:
		
							
								
								
									
										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();
 | 
					today = new Date();
 | 
				
			||||||
timeold = (today.getTime() - lastUpdated.getTime());
 | 
					timeold = (today.getTime() - lastUpdated.getTime());
 | 
				
			||||||
secondsold = Math.floor(timeold / 1000);
 | 
					secondsold = Math.floor(timeold / 1000);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,8 +8,7 @@ title: 搜索
 | 
				
			|||||||
<ul id="results-container"></ul>
 | 
					<ul id="results-container"></ul>
 | 
				
			||||||
<script src="/js/simple-jekyll-search.min.js"></script>
 | 
					<script src="/js/simple-jekyll-search.min.js"></script>
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
function getQueryVariable(variable)
 | 
					function getQueryVariable(variable){
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
       var query = window.location.search.substring(1);
 | 
					       var query = window.location.search.substring(1);
 | 
				
			||||||
       var vars = query.split("&");
 | 
					       var vars = query.split("&");
 | 
				
			||||||
       for (var i=0;i<vars.length;i++) {
 | 
					       for (var i=0;i<vars.length;i++) {
 | 
				
			||||||
@@ -29,7 +28,7 @@ getSearchJSON(function(json){
 | 
				
			|||||||
     searchInput: sbox,
 | 
					     searchInput: sbox,
 | 
				
			||||||
     resultsContainer: document.getElementById('results-container'),
 | 
					     resultsContainer: document.getElementById('results-container'),
 | 
				
			||||||
     json: json,
 | 
					     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
 | 
					     limit: 20
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
  sjs.search(mykeyword);
 | 
					  sjs.search(mykeyword);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user