Chrome 扩展程序消息传递不起作用(background.js 到 content.js)

2024-01-07

我束手无策,试图弄清楚为什么我无法在我的 Chrome 扩展程序中传递消息。

请记住,上个月我对 javascript 完全陌生,并且我一直在通过在线视频自学(我的编码背景完全是 java)。

我想要的只是让我的后台脚本能够通知我的内容脚本发生了一些事情,然后随后在内容脚本中执行一些代码。正如你在下面看到的,我的代码设置与文档相同 https://developer.chrome.com/extensions/messaging,但它不起作用!

以下是我加载扩展程序时遇到的错误:

Errors https://i.stack.imgur.com/W47Jr.png

清单.json

{
   "content_scripts": [
      {
      "matches": ["<all_urls>"],
      "js": ["content.js"]
      }
   ],

   "background": {
      "scripts": ["background.js"],
      "persistent": true
    },

   "permissions": [
      "activeTab",
      "tabs",
      "storage"
   ],

   "manifest_version": 2,
   "name": "eSports YT Viewer",
   "version": "1.0.0",
   "description": "An eSports viewer for youtube"
}

背景.js

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
   chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
      console.log(response.farewell);
   });
});

内容.js

chrome.runtime.onMessage.addListener(
   function(request, sender, sendResponse) {
      console.log(sender.tab ?
      "from a content script:" + sender.tab.url :
      "from the extension");
      if (request.greeting == "hello") {
         sendResponse({farewell: "goodbye"});
      }
});

非常感谢任何帮助!谢谢。


从我在你的帖子中看到的一切看起来都是按顺序进行的,所以我只是提出一些想法:

我认为这里错误的线索是第一个错误,而不是第二个错误——看起来脚本之间的通信还没有正确建立 https://developer.chrome.com/extensions/tabs#method-sendMessage.

可能尝试改变persistent将后台脚本设置为 false:

"background": {
  "scripts": ["background.js"],
  "persistent": false
},

来自文档 https://developer.chrome.com/extensions/background_pages#manifest,仅当您使用以下命令修改网络请求时才需要chrome.webRequestAPI 可能会导致此处的设置出现一些奇怪的问题。

但正如我所说,这只是初步猜测。

祝你好运!

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

Chrome 扩展程序消息传递不起作用(background.js 到 content.js) 的相关文章

  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 三个JS,给纹理添加镜面反射(光泽)

    我有一个纹理应用于 Three js 中的对象 我想为其添加一些镜面反射或光泽 我看到这样的例子 new THREE MeshPhongMaterial color 0x996633 specular 0x050505 shininess
  • 我可以通过什么方式混合 jQuery 和 vanilla JavaScript

    我有一个用普通 JavaScript 编写的 Web 应用程序 我想用 jQuery 动画来增强它 并使用我在各种 jQuery 插件中找到的一些功能 例如上传 http www uploadify com 可以通过什么方式将 jQuery
  • 如何使用多个 select2 框过滤表格?

    我正在尝试使用 和多个 select2 框的类来过滤表格 表格 HTML table class table tbody tr class kanban event Austin td td tr tr class csm event Ch
  • 为什么省略分号会破坏这段代码?

    或者换句话说 为什么分号插入失败 导致下面的代码被破坏 function Foo Foo prototype bar function console log bar lt missing semicolon function Foo pr
  • 在有限的上下文中运行 JS 代码

    我正在尝试奔跑trusted 隔离 上下文中的 JS 代码 基本上想出了这个方法 function limitedEval src context return function with this return eval src call
  • 有没有办法动态更改 jqGrid 的单元格值?

    这个问题可能已经被问过很多次了 但我想知道是否可以动态更改 jqgrid 的单元格值 我基本上有一个网格 它通过 JSON 字符串加载数据 在特定列的某些行上 该值可能为 null 因此 预先知道哪个行 ID 是一个问题 然后能够将 nul
  • Javascript 对象属性名称

    在 C 中 可以将对象属性的名称作为字符串值获取 名称 对象 Property gt myProperty 这可以在 Javascript Typescript 中完成吗 Object Keys 是我找到的唯一东西 但它给了我所有的键 示例
  • Javascript 进程是否有多个执行线程?

    背景 我正在创建一个 地址簿 类型的应用程序 有很多条目需要加载 一个想法是首先加载一小部分条目 让用户开始 然后将剩余条目排队 优先考虑用户单击的条目 例如 如果他们单击以 X 开头的名称 请先加载这些名称 然后再处理队列的其余部分 这个
  • 有没有一种方法可以在没有输入的情况下发送表单值

    假设我有以下表格
  • Javascript 将对象推送为克隆

    我将 d3 用于交互式网络应用程序 我需要绑定的数据在交互过程中发生变化 并且由 JSON 变量中的一些选定对象组成 为此 我在 JSON 变量上使用了映射 并进行了一些查询来选择适当的对象 对象被推送到列表中 并且该列表被绑定为新数据 我
  • 如何在React Native的MapView中设置标记

    我想在React Native中的MapView上设置一个标记 但是通过官方文档找不到任何信息MapView https facebook github io react native docs mapview html content 如
  • Angular UI 路由器嵌套视图问题

    我在理解 Angular UI Router 嵌套视图的工作原理时遇到了一些问题 我的 stateProvider 看起来像这样 stateProvider state login url login views main template
  • Firefox Addon 中的 JQuery 导致多个警告

    我在 Firefox 插件中使用 jquery 但我不断收到大量警告消息 如下所示 anonymous function does not always return a value System JS WARNING resource g
  • 如何知道 .keyup() 是否是字符键(jQuery)

    如何知道 keyup 是否是字符键 jQuery input keyup function if key is a character such as a b A b c 5 3 2 etc not enter key or shift o
  • 如何从 html 页面 [javascript] 调用 Web 服务方法而不刷新页面

    我有一个webservice这将返回一个值 我的要求是 我需要调用它webservice从一个index html页面 该页面有一个 html 提交按钮 在该按钮上单击我正在呼叫JavaScript 从那里我想调用网络方法 我怎样才能做到这
  • 如何从 CSS 选择器中提取类名?

    故事 我目前正在构建一个 ESLint 规则 以警告在 CSS 选择器定位器中使用引导布局导向和角度技术类 目前我在字符串方法中使用简单的子字符串 for var i 0 i lt prohibitedClasses length i if
  • vuejs中如何获取组件编译后的html内容

    我有一个这样的组件
  • onPress 方法中箭头函数与普通函数的行为

    正在学习 Native React 并学习更多关于 javascript 的知识 所以我仍然不明白它的行为的很多事情 我使用 TouchableOpacity 及其 onPress 属性创建了一个按钮组件 为了让它工作 我必须发送我想要执行
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse

随机推荐

  • winRT 上异常堆栈中的行号

    我们有一个使用 WinRT 和 XAML C 的 Windows 应用商店应用程序项目 问题是 当抛出一些异常并且我使用记录异常时Debug WriteLine ex 没有行号 所以我不知道异常到底在哪里抛出 当然 我在 项目属性 gt 构
  • 在 Lisp 中获取列表内列表的索引

    如果我有一个这样的清单 0 1 2 3 4 5 6 7 8 0 3 6 1 3 7 2 4 8 0 4 8 2 4 6 我想找到的索引 0 3 6 有内置函数可以做到这一点吗 POSITION当搜索项本身是一个列表时 似乎不起作用 See
  • Javascript:10秒后调用函数,然后每1分钟调用一次

    我有以下场景 我有一个 javascript ajax 函数loadCars 需要在页面加载 10 秒后调用 然后每 60 秒调用一次 以下是我到目前为止所尝试过的 setTimeout function setInterval funct
  • 二叉搜索树插入 - 根始终为空

    我有使用递归在二叉搜索树中插入值的 ds 代码 问题是根始终保持为空 执行后 第一个 printf 打印 10 但第二个 printf 在 insertRec 10 之后 不会打印任何内容 因为 root 为 null include
  • 查找数组中两个不连续的元素,且其总和最小

    Intro 据我所知 这个问题还没有被问到 这是一道面试题 我什至不是专门寻找代码解决方案 任何算法 伪代码都可以工作 问题 给定一个整数数组int A和它的大小N 找到 2非后续的 在数组中不能相邻 具有最小总和的元素 此外 答案不得包含
  • java swing中如何设置按钮的背景图片

    我想改变 Swing 中 JButton 的背景图像 方法 Button setIcon 只设置图标不设置背景 有没有easy怎么办 您仍然可以使用setIcon但您需要设置对齐方式以使文本出现在图像上 button setHorizont
  • 如何定位并恢复已删除的文件

    在过去的某个阶段 我有一个 foo txt 它受 Mercurial 源代码控制 不过现在它已经被删除了 当我不知道删除文件的最后 Mercurial 版本时 如何恢复该文件 如果您知道文件的确切路径 您可以执行以下操作 hg log l
  • 如何更改 IntelliJ IDEA 中的语言?

    这似乎是个愚蠢的问题 但我在设置中找不到它 怎么更改语言 你指的是IDE语言吗 似乎你不能 http devnet jetbrains net message 5307040 5307040 除非你自己本地化 http www jetbra
  • 在 Visual Studio Code 中,如何获取在源代码管理窗格中执行的所有 git 命令的 git 日志?

    在 vscode 源代码控制窗格中 我想获取正在运行的会话的任何应用的 git 命令的命令日志 包括所有鼠标单击操作 例如 在 初始化存储库 之前 在 初始化存储库 之后 应该记录git init命令 等等 The Git Output可以
  • JSON 结构在 IE7 中不起作用 (JavaScript)

    好吧 我是 JSON 新手 所以如果我的问题有点无知 请原谅我 我已经把头撞在墙上太多了 需要一些专家的建议 我试图得到一个简单的示例 其中 HTML 页面使用 jQuery 的 JSON AJAX 函数来调用示例 PHP 页面 该页面传回
  • gethitRect() ,我做错了,这是如何工作的?

    我不断得到top bottom left right 0 我想我做错了 正确的方法是什么 TIA in onCreate ImageView trash ImageView findViewById R id dropTarget tras
  • 没有线性化点的方法是否总是不可线性化?

    如果你能明确证明一个方法没有线性化点 是否一定意味着该方法不可线性化 另外 作为一个子问题 如何证明一个方法没有线性化点 为了建立在上述答案的基础上 一种方法can被描述为可线性化的 正如 djoker 在书中提到的 http www am
  • 使用 true 和 false 语句在 python 中循环整个程序

    我写了一个程序 但我不知道如何循环它 如有帮助 将不胜感激 这是我需要帮助的程序 有两种类型的循环 不定 while 循环和定 for 循环 如果您想让程序循环特定次数 请使用 for 循环 for count in range 0
  • 如何设置 Eclipse 来编辑 Perl 而无需运行时检查?

    我正在开发一个包含 Java 在客户端 和 Perl 在服务器端 的项目 我真的很想使用 Eclipse 来编辑我的 Perl 脚本 而不是使用另一个编辑器 我尝试过使用史诗插件 http www epic ide org 但是 我无法在本
  • 您可以使用特定类型的类对泛型类进行子类化吗?

    我有一个泛型类 其子类提供特定类型 public abstract class GenericBase
  • 在 AsyncTask 中使用从 LoaderManager 返回的游标

    我有一个光标返回onLoadFinished回调 来自LoaderManager LoaderCallbacks 我想对此游标进行一些 可能成本高昂 后处理 所以 我要发射一个AsyncTask使用这个游标 但是 我遇到间歇性崩溃 但有以下
  • 从 MongoDb 数组的数组中删除元素

    下面是数组联系人的架构 联系人数组有一个字段标签 它是另一个数组 如何从数组 Hashtags 中删除元素 openLove contacts addedDate ISODate 2015 12 02T09 06 09 891Z perso
  • 复制 Bash 数组失败

    在 Bash 脚本中将数组分配给变量似乎相当复杂 a a b c b a echo a 0 echo a 1 echo b 0 echo b 1 leads to a b a 代替 a b a b 为什么 我该如何修复它 如果你想copy将
  • WPF:如何使用组合框文本搜索?

    我是否正确假设组合框中的文本搜索在组合框顶部提供了一个文本输入框 当我输入时该文本输入框会被过滤掉 如果是这样 我不明白为什么它不起作用 我有一个 ComboBox 其 ItemsSource 通过 DataContext 绑定到 List
  • Chrome 扩展程序消息传递不起作用(background.js 到 content.js)

    我束手无策 试图弄清楚为什么我无法在我的 Chrome 扩展程序中传递消息 请记住 上个月我对 javascript 完全陌生 并且我一直在通过在线视频自学 我的编码背景完全是 java 我想要的只是让我的后台脚本能够通知我的内容脚本发生了