chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { console.log('收到消息:', request); if (request.action === 'checkOnlineStatus') { const isDouyin = window.location.hostname.includes('douyin.com'); sendResponse({isDouyin: isDouyin}); } else if (request.action === 'checkViewers') { const viewersCounts = []; const liveRooms = document.querySelectorAll('[data-e2e="user-card"]'); liveRooms.forEach(room => { const viewersElement = room.querySelector('[data-e2e="watch-count"]'); if (viewersElement) { const viewersText = viewersElement.textContent.trim(); const viewers = parseViewersCount(viewersText); const roomTitle = room.querySelector('[data-e2e="video-title"]')?.textContent.trim() || '未知直播间'; viewersCounts.push({ room: roomTitle, viewers: viewers }); } }); sendResponse({viewersCounts: viewersCounts}); } else if (request.action === 'getCurrentRoomId') { try { const url = window.location.href; const match = url.match(/live\.douyin\.com\/([^/?]+)/); if (match && match[1]) { sendResponse({ roomId: match[1] }); } else { const roomIdElement = document.querySelector('[data-room-id]'); if (roomIdElement) { sendResponse({ roomId: roomIdElement.getAttribute('data-room-id') }); } else { sendResponse({ error: '未找到直播间ID' }); } } } catch (error) { console.error('获取直播间ID时出错:', error); sendResponse({ error: error.message }); } return true; // 保持消息通道开启 } return true; // 保持消息通道开放 }); function parseViewersCount(viewersText) { const number = parseFloat(viewersText.replace(/[^0-9.]/g, '')); const unit = viewersText.replace(/[0-9.]/g, '').trim(); switch(unit) { case '万': return number * 10000; case '亿': return number * 100000000; default: return number; } } console.log('内容脚本已加载');