import '../.wxt/types/imports.d.ts'; import { browser } from 'wxt/browser'; export default defineBackground(() => { // 监听扩展图标点击事件,打开侧边栏 browser.action.onClicked.addListener(async (tab) => { if (tab.id) { try { await browser.sidePanel.open({ tabId: tab.id }); } catch (err) { console.error('Failed to open side panel:', err); } } }); // 监听扩展安装或更新事件 browser.runtime.onInstalled.addListener(async ({ reason }) => { if (reason === 'install') { console.log('Extension installed for the first time'); } else if (reason === 'update') { console.log('Extension updated to a new version'); } // 获取所有标签页 const tabs = await browser.tabs.query({}); // 过滤不合法或受限制的 URL const targetTabs = tabs.filter((tab) => { if (!tab.id || !tab.url) return false; const restrictedProtocols = [ 'chrome:', 'chrome-extension:', 'about:', 'edge:', 'view-source:', ]; return !restrictedProtocols.some((protocol) => tab.url!.startsWith(protocol)); }); const results = await Promise.allSettled( targetTabs.map((tab) => browser.scripting .executeScript({ target: { tabId: tab.id! }, files: ['/content-scripts/content.js'], }) .catch((err) => { console.warn(`Failed to inject script into tab ${tab.id}:`, err.message); }), ), ); const successCount = results.filter((r) => r.status === 'fulfilled').length; console.log( `Successfully injected content script into ${successCount}/${targetTabs.length} tabs.`, ); }); chrome.tabs.onUpdated.addListener((tabId) => { console.log('加载完成的 Tab ID:', tabId); }); });