Chrome扩展调用chrome.scripting.executeScript提示无法访问chrome:// URL错误
报错原因
Chrome出于安全策略限制,禁止任何扩展向chrome://开头的浏览器内置页面(包括新标签页、扩展管理页、浏览器设置页等)注入脚本,即便是声明了activeTab、scripting权限也不允许。该错误是你在打开这类内置页面时触发扩展的脚本注入逻辑导致,你提供的扩展代码本身没有语法或配置问题。
解决方法
- 方法1:调整测试场景
测试扩展功能时,先打开任意http/https协议的普通网页(比如搜索引擎、各类站点首页等),再点击扩展按钮触发变色逻辑,即可正常运行。 - 方法2:添加兼容校验逻辑
如果希望扩展在任意页面点击都不会抛出异常,可以在popup.js的注入逻辑前增加URL校验,遇到不支持的页面直接拦截操作,修改后的点击事件代码如下:
changeColor.addEventListener('click', async () => { let [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); // 校验当前页面是否是浏览器内置页面 if (tab.url.startsWith('chrome://') || tab.url.startsWith('edge://')) { alert('当前页面为浏览器内置页面,不支持修改背景色,请打开普通网页后重试'); return; } chrome.scripting.executeScript({ target: { tabId: tab.id }, function: setPageBackgroundColor, }); });
内容的提问来源于stack exchange,提问作者Minsik Park
相关产品推荐
相关产品推荐

