/* 简航 SimpleNav —— 前台交互:搜索引擎切换 + 联想下拉 + 合集标签页 */ (function () { 'use strict'; var cfg = window.SIMPLENAV || {}; /* ---------- 搜索引擎切换 ---------- */ var tabs = document.querySelectorAll('#engine-tabs .s-engine'); var form = document.getElementById('search-form'); var input = document.getElementById('search-text'); function activateEngine(el) { tabs.forEach(function (t) { t.classList.remove('active'); }); el.classList.add('active'); var search = el.getAttribute('data-search'); var param = el.getAttribute('data-param'); var slug = el.getAttribute('data-slug'); var ph = el.getAttribute('data-placeholder') || '搜索'; if (form) { form.setAttribute('action', search); } if (input) { input.setAttribute('name', param); input.setAttribute('placeholder', ph); } form.setAttribute('data-slug', slug); hideWord(); } tabs.forEach(function (el) { el.addEventListener('click', function () { activateEngine(el); input && input.focus(); }); }); /* ---------- 联想下拉 ---------- */ var word = document.getElementById('word'); var timer = null; var lastQ = ''; function hideWord() { if (word) { word.innerHTML = ''; word.style.display = 'none'; } } function showWord(items) { if (!word) return; if (!items || !items.length) { hideWord(); return; } word.innerHTML = items.map(function (t) { var d = document.createElement('div'); d.textContent = t; return '
  • ' + d.innerHTML + '
  • '; }).join(''); word.style.display = 'block'; } if (input) { input.addEventListener('input', function () { var q = input.value.trim(); if (q === '') { hideWord(); return; } if (q === lastQ) return; lastQ = q; clearTimeout(timer); timer = setTimeout(function () { var slug = form ? (form.getAttribute('data-slug') || '') : ''; fetch(cfg.suggest + '?slug=' + encodeURIComponent(slug) + '&q=' + encodeURIComponent(q)) .then(function (r) { return r.json(); }) .then(function (data) { showWord(data && data.items); }) .catch(function () { hideWord(); }); }, 180); }); input.addEventListener('keydown', function (e) { if (e.key === 'Enter' && word && word.style.display === 'block' && word.firstChild) { // 默认走第一条建议 input.value = word.firstChild.textContent; hideWord(); } }); } document.addEventListener('click', function (e) { if (word && !word.contains(e.target) && e.target !== input) { hideWord(); } var li = e.target.closest ? e.target.closest('#word li') : null; if (li) { input.value = li.textContent; hideWord(); if (form) { form.submit(); } } }); /* ---------- 合集标签页 ---------- */ var collTabs = document.querySelectorAll('#coll-tabs .tab'); collTabs.forEach(function (tab) { tab.addEventListener('click', function () { collTabs.forEach(function (t) { t.classList.remove('active'); }); tab.classList.add('active'); document.querySelectorAll('.tab-panel').forEach(function (p) { p.classList.remove('active'); }); var panel = document.getElementById(tab.getAttribute('data-target')); if (panel) { panel.classList.add('active'); } }); }); })();