blob: 27abb4e0b3fde7507e1e12565c5ea50d3f993e5b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
// Search functionality for standalone search page
(function () {
'use strict';
let localSearch = null;
let isDataLoaded = false;
function initSearch() {
const input = document.getElementById('search-input');
const container = document.getElementById('search-results');
if (!input || !container || typeof LocalSearch === 'undefined') {
container.innerHTML = '<div class="search-result-message">搜索功能初始化失败</div>';
return;
}
localSearch = new LocalSearch({
path: searchConfig.path,
top_n_per_article: searchConfig.top_n_per_article,
unescape: searchConfig.unescape
});
localSearch.fetchData();
window.addEventListener('search:loaded', function () {
isDataLoaded = true;
container.innerHTML = '<div class="search-result-message"></div>';
});
function displaySearchResult() {
if (!isDataLoaded) {
container.innerHTML = '<div class="search-result-message">加载中...</div>';
return;
}
const searchText = input.value.trim().toLowerCase();
if (searchText.length === 0) {
container.innerHTML = '<div class="search-result-message"></div>';
return;
}
const keywords = searchText.split(/[-\s]+/);
const resultItems = localSearch.getResultItems(keywords);
if (resultItems.length === 0) {
container.innerHTML = '<div class="search-result-message">未找到相关结果</div>';
} else {
container.innerHTML = `
<div class="search-result-message">找到 ${resultItems.length} 个结果</div>
<ul class="search-result-list">
${resultItems.map(result => result.item).join('')}
</ul>
`;
}
}
input.addEventListener('input', displaySearchResult);
input.focus();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initSearch);
} else {
initSearch();
}
})();
|