Chrome 扩展程序导致“未捕获承诺错误:无法访问 chrome:// URL”

问题描述

我正在关注 chrome 官方网站 https://developer.chrome.com/docs/extensions/mv3/getstarted/ 中发布的如何开始使用 chrome 扩展程序here

我复制并粘贴了所有代码并以相同的方式运行。但就我而言,当我运行 chrome.scripting.executeScript 时,它会导致 "Uncaught (in promise) Error: Cannot access a chrome:// URL" 错误

我不知道是什么问题。这是我从上面的链接复制的代码

  • manifest.json
{
  "name": "Getting Started Example","description": "Build an Extension!","version": "1.0","manifest_version": 3,"background": {
    "service_worker": "background.js"
  },"permissions": ["storage","activeTab","scripting"],"action": {
    "default_popup": "popup.html","default_icon": {
      "16": "/images/get_started16.png","32": "/images/get_started32.png","48": "/images/get_started48.png","128": "/images/get_started128.png"
    }
  },"icons": {
    "16": "/images/get_started16.png","128": "/images/get_started128.png"
  }
}
  • background.js
let color = '#3aa757';

chrome.runtime.onInstalled.addListener(() => {
  chrome.storage.sync.set({ color });
  console.log(`default color: ${color}`);
});
  • popoup.js
// Initialize button with user's preferred color
let changeColor = document.getElementById('changeColor');

chrome.storage.sync.get('color',({ color }) => {
  changeColor.style.backgroundColor = color;
});

// When the button is clicked,inject setPageBackgroundColor into current page
changeColor.addEventListener('click',async () => {
  console.log('clicked');
  console.log(chrome.tabs);

  let [tab] = await chrome.tabs.query({ active: true,currentwindow: true });
  console.log(tab);

  chrome.scripting.executeScript({
    target: { tabId: tab.id },function: setPageBackgroundColor,});
});

// The body of this function will be executed as a content script inside the
// current page
function setPageBackgroundColor() {
  chrome.storage.sync.get('color',({ color }) => {
    document.body.style.backgroundColor = color;
  });
}
  • popup.html
<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="button.css" />
  </head>
  <body>
    <button id="changeColor"></button>
    <script src="popup.js"></script>
  </body>
</html>

你有什么想法吗??

解决方法

当您尝试触发事件时,请确保您不在 chrome://extensions/ 或类似事件中。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...