四时宝库

程序员的知识宝库

Manifest V3 规范修改后的 `background.js` 文件内容 标准框架

// background.js (Manifest V3 版本)


// 扩展安装时触发的监听事件(V3 中无需额外修改,语法兼容)

chrome.runtime.onInstalled.addListener(() => {

console.log("Auto Clicker extension installed");

});


// 标签页更新事件监听(核心逻辑适配 V3)

chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {

// 仅在标签页加载完成后执行脚本(保持原逻辑)

if (changeInfo.status === 'complete') {

// Manifest V3 中使用
chrome.scripting.executeScript 替代原 chrome.tabs.executeScript

chrome.scripting.executeScript({

target: { tabId: tabId }, // 指定目标标签页

files: ['contentqw.js'] // 注入的脚本文件(原 contentqw.js 逻辑不变)

}).catch(err => {

// 捕获并输出可能的错误(如权限问题、脚本不存在等,便于调试)

console.error("Failed to execute content script:", err);

});


// 原注释中的 setTimeout 逻辑(如需启用,取消注释下方代码并确保符合 V3 规范)

/*

setTimeout(() => {

chrome.scripting.executeScript({

target: { tabId: tabId },

files: ['content.js'] // 注意:需确保 content.js 存在且在 manifest.json 中声明

});

}, 1000 * 60 * 1); // 60秒后执行(保持原定时逻辑)

*/

}

});

关键修改说明(Manifest V3 适配点):

1. 背景页机制变更:

V3 中 `background.js` 运行在 Service Worker 环境中(取代 V2 的 `background.page` 或 `background.scripts`),无需额外包裹函数,顶层代码直接执行。


2. 内容脚本注入 API 变更:

原 `chrome.tabs.executeScript` 在 V3 中被废弃,需改用 `
chrome.scripting.executeScript`,并通过 `target.tabId` 指定标签页,`files` 字段传入脚本路径。


3. 错误处理增强:

新增 `.catch()` 捕获脚本注入失败的错误(如扩展权限不足、目标脚本文件不存在等),便于调试(原 V2 代码未处理此类错误)。


4. 语法简化:

箭头函数替代 `function` 表达式,简化代码结构(不影响逻辑,符合现代 JS 实践)。

配套 manifest.json 注意事项(若需完整适配 V3):

为确保上述 `background.js` 正常运行,需在 `manifest.json` 中声明以下权限和配置(V3 必须):

{

"manifest_version": 3,

"name": "Auto Clicker",

"version": "1.0",

"permissions": ["activeTab", "scripting", "tabs"], // 新增 scripting 权限

"background": {

"service_worker": "background.js" // 指定 Service Worker 文件

},

"content_scripts": [

// 若 contentqw.js/content.js 需要匹配特定站点,可在此声明(按需添加)

{

"matches": ["<all_urls>"], // 或具体站点,如 "https://*.example.com/*"

"js": ["contentqw.js"] // 若通过 manifest 注入,可无需在 background 中动态注入

}

]

}


- 核心权限:`scripting` 是 V3 中动态注入脚本的必须权限,`tabs` 用于监听标签页更新事件。

- 静态/动态注入选择:若脚本需在所有页面加载时注入,可直接在 `content_scripts` 中声明(更高效);若需动态控制(如仅在特定条件下注入),则保留 `background.js` 中的 `
chrome.scripting.executeScript` 逻辑。

以上修改完全遵循 V3 规范,逻辑与原代码一致,同时修复了原代码中可能存在的未处理错误问题。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接