如何修复 Chrome 扩展程序“未捕获的引用错误:文档未定义”错误? [复制]

2024-04-24

我正在创建一个扩展,我希望它能够在任何网站上找到特定的单词并突出显示它们。 但是,在加载扩展程序后,我立即收到一条错误消息。有谁知道如何解决这一问题?

我的代码如下。

背景.js

chrome.runtime.onInstalled.addListener(() => {
  chrome.action.setBadgeText({
    text: "OFF",
  });
});

if (document !== undefined) {

const all = '*://*/*'
const screenwords = document.querySelectorAll('*');
var wlist = ["dog", "cats"];

chrome.action.onClicked.addListener(async (tab) => {
  if (tab.url.startsWith(all)) {
    // Retrieve the action badge to check if the extension is 'ON' or 'OFF'
    const prevState = await chrome.action.getBadgeText({ tabId: tab.id });
    // Next state will always be the opposite
    const nextState = prevState === 'ON' ? 'OFF' : 'ON';

    // Set the action badge to the next state
    await chrome.action.setBadgeText({
      tabId: tab.id,
      text: nextState,
    });

  if (nextState === "ON") {
    /*
    // search for words in list
    var foundwords;
    var wcounter;
    var position;
    for (var i = 0; i < screenwords.length; i++) {
      var results = screenwords.search(wlist[i]);
      if (results != -1) { // if words from list are found
        foundwords = true; // set foundwords to true
        wcounter++; // increment wcounter by +1
        position.i = results;
        }
    };
*/
    for (let i = 0; i < screenwords.length; i++) {
      for (let j = 0; j < wlist.length; j++) {
        if (screenwords[i].innerHTML.includes(wlist[j])) {
          screenwords[i].innerHTML = screenwords[i].innerHTML.replace(wlist[j], "***");
        };
    };
    }
  } else if (nextState === "OFF") {
    location.reload;
  };
}});


}

清单.json

{
  "manifest_version": 3,
  "name": "TESTING 231",
  "description": "hello, world",
  "version": "1.0",
  "icons": {
    "16": "images/icon-16.png",
    "32": "images/icon-32.png",
    "48": "images/icon-48.png",
    "128": "images/icon-128.png"
  },
  "background": {
    "service_worker": "background.js"
  },
  "commands": {
    "_execute_action": {
      "suggested_key": {
        "default": "Ctrl+B",
        "mac": "Command+B"
      }
    }
  },
  "permissions": ["activeTab", "scripting"],
  "action": {
    "default_icon": {
      "16": "images/icon-16.png",
      "32": "images/icon-32.png",
      "48": "images/icon-48.png",
      "128": "images/icon-128.png"
    }
  }
}

我没有 popup.html 文件,因为该程序应该在用户单击扩展名后立即运行。

我仔细检查了代码,似乎没有任何错别字。该错误出现在 '''background.js''' if (document !== undefined)。谢谢!


You Cannot access DOM from 服务人员.

扩展服务工作人员无法访问 DOM,但如果需要,您可以将其用于屏幕外文档。 块引用

文档:https://developer.chrome.com/docs/extensions/mv3/service_workers/ https://developer.chrome.com/docs/extensions/mv3/service_workers/

如果您想访问DOM of 扩大,你应该使用弹出脚本 https://developer.chrome.com/docs/extensions/mv3/user_interface/#popup https://developer.chrome.com/docs/extensions/mv3/user_interface/#popup

OR,如果你想从网页的上下文中执行Javascript,你应该使用内容脚本. https://developer.chrome.com/docs/extensions/mv3/content_scripts/ https://developer.chrome.com/docs/extensions/mv3/content_scripts/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修复 Chrome 扩展程序“未捕获的引用错误:文档未定义”错误? [复制] 的相关文章

随机推荐

  • Is Type 和 Is Type(object, object) 抛出 TypeException

    我试图断言方法调用返回的对象属于以下类型List
  • EC2 t2.medium 可爆发信用“储蓄”计算

    我正在使用 T2 medium 实例 一天的三分之一的时间我都在做密集的统计计算 并计算出剩下的 2 3 的时间我将以每小时 24 小时的速度 赚取 学分 但这并没有发生 这是我这两天的使用情况 这是我的信用账户 直到昨天下午 6 点我已经
  • 在 Ruby 中模拟 int64 溢出

    我是一名资深程序员 但对 Ruby 还很陌生 我正在尝试移植一种名为 CheckRevision 的算法 用于在登录 Battle net 的在线游戏服务之前检查游戏文件的完整性 该算法使用给定的公式对文件进行 哈希 没有无聊的细节 而是不
  • 从 apache Spark 读取/写入 dynamo 数据库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有任何 Java 库支持从 apache Spark Mesos 读取 写入 dynamo
  • 获取同一 FK 日期差异的前一条记录

    我需要在一小时内插入同一客户的前 1 条记录 如果记录在一小时后插入 则不需要该记录 请参见下表 这只是数千条记录的样本 我正在使用 SQL Server 2005 替代文本 http img651 imageshack us img651
  • 如何在node.js中关闭数据库连接?

    当我关闭数据库连接时node js我收到这个错误 Cannot enqueue Query after invoking quit 这是我的code socket on adminConnect function email connect
  • Java 大型数据库插入

    我有一个数据库 需要在其中插入批量数据 一次大约 500k 条记录 我正在使用 derby 进行测试 发现这么多记录的插入时间约为 10 15 分钟 我正在用 Java 进行批量插入 这次看起来是否很慢 在普通笔记本电脑上工作 有没有办法加
  • 在 SQL Server 的 select 语句中使用带有 TOP 的变量,而不使其动态化 [重复]

    这个问题在这里已经有答案了 declare top int set top 5 select top top from tablename 是否可以 或者对这样的逻辑有什么想法 我不想使用动态查询 是的 在 SQL Server 2005
  • 避免 Firebase 可调用函数的 CORS 预检

    我有一个Firebase 可调用云函数 https firebase google com docs functions callable我在浏览器中的 javascript 应用程序中调用它 由于请求主机是 cloudfunctions
  • Spring自动装配参数化集合

    大家好 感谢您提前的帮助 我遇到一个问题 Spring 无法自动装配 ArrayBlockingQueue 类型的参数化成员变量 这是java代码 Controller public class SomeController Autowir
  • WPF 使用凭据启动浏览器

    我正在使用 WPF 和 C 我希望能够启动一个浏览器窗口 最有可能是 IE 并提供已知的凭据 以便基于 Windows 的应用程序可以处理从自身到外部浏览器的转换 而无需用户再次输入他 她的凭据 我确实知道如何启动浏览器 System Di
  • 仅在模块中加载 Yii Bootstrap

    我尝试仅在管理模块中加载 Yii Bootstrap 扩展 但它不起作用 我假设我需要预加载它或以某种方式启动它 谢谢 class AdminModule extends CWebModule public function init im
  • UIWebView 不断尝试加载但没有结果

    我正在尝试使用 UIWebView 连接到 wikiTravel 页面 这是我的代码 NSURL url NSURL URLWithString http wikitravel org en Beijing NSURLRequest req
  • 从命令行运行 Jupyter Notebook (.ipynb),就像它是 .py 文件一样

    我正在本地计算机上编写 Jupyter 笔记本 该笔记本最终将在远程服务器 运行 Ubuntu 上运行 每次我需要进行更改时 我都必须将笔记本导出为 py文件 然后从服务器的命令行调用它 我希望能够即时运行它 调用一个命令来获取当前的 ip
  • Gmail 的操作邮件程序配置

    我正在尝试将使用 Gmail SMTP 的电子邮件传送添加到我的应用程序中 我之前已经完成了 不太安全的应用程序 方式 但我不想在这个项目中使用此选项 我试图查看谷歌的文档或一些宝石以使其工作 但无济于事 每个人都只是发送一些代码 如下所示
  • 使背景图像与屏幕大小相同

    我希望背景图像填满屏幕 并且不担心失去宽高比 已经证实了一切 不要认为我错过了任何明显的事情 HTML phone margin auto height 737px width 654px background image url imgs
  • 比较sql server中两个字符串中的数字

    我有两个字符串作为 CountryLocationIDs 和 LocationIDs 其值 CountryLocationIDs 400 600 150 850 160 250 LocationIDs1 600 150 900 然后我需要另
  • 如何为特定用户选择最后一行?

    我有一个这样的表 requests id id user unix time 1 2353 1339412843 2 2353 1339412864 3 5462 1339412894 4 3422 1339412899 5 3422 13
  • 我的 Rails 路由应该是什么样子才能与 pushState Ember.js 路由一起使用?

    简而言之 当构建 Ember js 应用程序以持久保存到 Rails 应用程序时 我应该如何处理 Rails 路由 视图 我想我只需要 Rails 来渲染 application html erb 布局 以便 Ember js 应用程序初始
  • 如何修复 Chrome 扩展程序“未捕获的引用错误:文档未定义”错误? [复制]

    这个问题在这里已经有答案了 我正在创建一个扩展 我希望它能够在任何网站上找到特定的单词并突出显示它们 但是 在加载扩展程序后 我立即收到一条错误消息 有谁知道如何解决这一问题 我的代码如下 背景 js chrome runtime onIn