// Search Functionality // Search data structure (in production, this would come from a server) const searchData = { pages: [ { title: '关于实验室', url: 'website.html#about', content: 'DAEL Design AI Ecology Lab 跨学科研究平台' }, { title: '研究方向', url: 'website.html#research', content: '生成式生态学 生物启发式智能 数字可持续性' }, { title: '研究团队', url: 'website.html#team', content: 'Dr. Lin Chen Sarah Wu James Zhao Yu Zhang' }, { title: '新闻资讯', url: 'news.html', content: '最新资讯 最新文章 热点文章' }, { title: '成果展示', url: 'publications.html', content: '专著教材 文章目录 软件开发 学位论文' }, { title: '资源下载', url: 'resources.html', content: '软件下载 资料下载 开源代码' }, { title: '学术资料', url: 'academic.html', content: '软件使用 教程 文档' } ], news: [], publications: [], resources: [] }; // Simple search function function performSearch(query) { if (!query || query.trim().length === 0) { return []; } const lowerQuery = query.toLowerCase().trim(); const results = []; // Search in pages searchData.pages.forEach(page => { const titleMatch = page.title.toLowerCase().includes(lowerQuery); const contentMatch = page.content.toLowerCase().includes(lowerQuery); if (titleMatch || contentMatch) { results.push({ type: 'page', title: page.title, url: page.url, snippet: page.content.substring(0, 100) + '...' }); } }); return results; } // Initialize search function initSearch() { const searchInput = document.getElementById('search-input'); const searchResults = document.getElementById('search-results'); const searchForm = document.getElementById('search-form'); if (!searchInput || !searchResults) return; // Real-time search let searchTimeout; searchInput.addEventListener('input', (e) => { clearTimeout(searchTimeout); const query = e.target.value.trim(); if (query.length === 0) { searchResults.classList.remove('active'); searchResults.innerHTML = ''; return; } searchTimeout = setTimeout(() => { const results = performSearch(query); displaySearchResults(results, searchResults); }, 300); }); // Handle form submission if (searchForm) { searchForm.addEventListener('submit', (e) => { e.preventDefault(); const query = searchInput.value.trim(); if (query) { window.location.href = `search.html?q=${encodeURIComponent(query)}`; } }); } // Close search results when clicking outside document.addEventListener('click', (e) => { if (!searchInput.contains(e.target) && !searchResults.contains(e.target)) { searchResults.classList.remove('active'); } }); } // Display search results function displaySearchResults(results, container) { if (results.length === 0) { container.innerHTML = '