/** * OSS Community - 文章抽屉交互逻辑 */ document.addEventListener('DOMContentLoaded', () => { initPostDrawer(); }); let drawerInitialized = false; let currentDrawerPostId = null; let drawerPollTimer = null; function initPostDrawer() { if (drawerInitialized) return; drawerInitialized = true; createDrawerElements(); // 全局点击事件委托 document.addEventListener('click', (e) => { const postCard = e.target.closest('.post-card'); if (postCard && postCard.dataset.postId) { e.preventDefault(); e.stopPropagation(); openPostDrawer(postCard.dataset.postId); } }); const overlay = document.getElementById('postDrawerOverlay'); if (overlay) overlay.addEventListener('click', closePostDrawer); const closeBtn = document.getElementById('postDrawerClose'); if (closeBtn) closeBtn.addEventListener('click', closePostDrawer); document.addEventListener('keydown', (e) => { if (e.key === 'Escape') closePostDrawer(); }); // 监听轮询数据更新抽屉内的 views/likes if (window.Polling) { window.Polling.on('posts', (data) => { if (!data.posts || !currentDrawerPostId) return; const post = data.posts.find(p => p.id == currentDrawerPostId); if (post) updateDrawerStats(post); }); } } function createDrawerElements() { if (document.getElementById('postDrawerOverlay')) return; // 创建遮罩层 const overlay = document.createElement('div'); overlay.id = 'postDrawerOverlay'; overlay.className = 'post-drawer-overlay'; // 创建抽屉 const drawer = document.createElement('div'); drawer.id = 'postDrawer'; drawer.className = 'post-drawer'; drawer.innerHTML = `
加载失败
${error.message || '未知错误,请稍后重试'}