如何在 Chrome 扩展中的后台脚本之间传递变量值

2023-12-08

我正在开发一个谷歌浏览器扩展。我在我的后台 javascript 文件(example.js)之一中为变量设置了一个值。我需要访问该值或将其传递给另一个后台 javascript 文件(extjs.js)。我该怎么做?有全局变量的概念吗?我的浏览器控制台中没有收到任何错误。

我的清单.json

{
"name": "Example",
"version": "31.0.1650.57",
"manifest_version": 2,
"background":{
"scripts":["common.js","example.js","extjs.js"]
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["myscript.js"]
}
]
}

我的例子.js

function trial()
{
/... some functionality../
var result = data;
}

我的 extjs.js

alert(result);

我知道我错过了一些东西。

问候, 尼基尔


所有后台脚本共享相同的 JS 上下文,因此其中一个脚本中声明的任何变量/函数都可供所有其他脚本使用(当然加载顺序也很重要)。

当指定一个或多个后台脚本时,Chrome会自动创建一个最小的HTML页面并插入一些<script>体内的标签。例如。自动生成的背景页面应如下所示:

<html>
    <head></head>
    <body>
        <script src="common.js"></script>
        <script src="example.js"></script>
        <script src="extjs.js"></script>
    </body>
</html>

您可以通过导航到查看您的背景页面chrome://extensions并检查Developer mode复选框。然后,在每个扩展下都有一个标记为“后台页面”的链接,您可以单击该链接来打开后台页面的 DevTools 控制台。


UPDATE:

我只是注意到您正在尝试访问函数局部变量(在trial()函数)来自全局上下文(这是不可能的)。

Since var result被定义在里面trial()函数,它是not在函数范围之外可以访问。 (也就是说,您将无法从example.js任何一个。)

您需要像这样更改您的代码:

示例.js:

var outer_result = 0;
function trial() {
    var inner_result = 1;   // <-- this is a local variable
    outer_result = 2;       // <-- this is a global variable
}
// `inner_result` is undefined outside the function

extjs.js:

console.log(outer_result);   // <-- '0' since `trial()` is not invoked yet
console.log(inner_result);   // <-- 'undefined' since it is never defined

trial();   // <-- executing `trial()` function

console.log(inner_result);   // <-- 'undefined' since it is function-local
console.log(outer_result);   // <-- '2' since `trial()` modified it
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Chrome 扩展中的后台脚本之间传递变量值 的相关文章

随机推荐

  • 处理 Recyclerview 中的点击项

    我有一个卧式回收机view inside 垂直回收视图 我添加列表cardview inside 卧式回收机view 当点击主活动的项目时如何获取项目信息 谢谢 public class MainActivity extends AppCo
  • 使用 xslt 从 xpath 语句列表中注释 xml 实例

    给定一个 xpath 语句列表 我想编写一个样式表 它将运行一个 xml 文档并输出相同的文档 但在每个 xpath 语句中标识的节点之前插入注释 我们来举个例子 从包含 xpath 语句的 xml 实例开始
  • 没有 ID 的清除超时

    有什么办法可以清除吗setTimeout 如果它没有明确的 ID 问题是我不允许更改一些已经运行的代码并在没有任何处理程序的情况下设置计时器 JS 是否为它们设置了 匿名处理程序 这些计时器是否存储在可访问的地方 我可以获得这些属性中的任何
  • 格式错误的字符串 ValueError ast.literal_eval() 与元组的字符串表示形式

    我正在尝试从文件中读取元组的字符串表示形式 并将该元组添加到列表中 这是相关代码 raw data userfile read split n for a in raw data print a btc history append ast
  • Rails 3 用户匹配算法到 SQL 查询(复杂)

    我目前正在开发一款根据回答的问题匹配用户的应用程序 我在正常的 RoR 和 ActiveRecord 查询中实现了我的算法 但使用它的速度很慢 将一个用户与其他 100 个用户进行匹配需要 Completed 200 OK in 17741
  • android:将 Android Studio 升级到 2.3 后无法构建项目

    因此 很高兴将我的 Android Studio 从稳定版本 2 2 更新到金丝雀通道 2 3 但不幸的是 它有严重的错误 项目无法构建 我尝试打开以前的项目并尝试创建新的示例应用程序 但出现了以下相同的错误 Gradle MyApplic
  • 删除两个字符串的相等部分

    在 PHP 中 我在服务器上有两条路径 它们都有匹配的部分 我想加入他们 但删除相同的部分 EXAMPLE 路径 1 home7 用户名 public html 目录 anotherdir wp content uploads 路径 2 d
  • 在 Swift 中使用 TWTRShareEmailViewController (Fabric Twitter SDK) 请求用户 Twitter 邮件

    我想请求该用户的 Twitter 邮件 在https dev twitter com twitter kit ios request email我们可以在 Obj C 中看到代码 但我需要 Swift 中的代码 但我无法翻译它 请问有人知道
  • 可疑文件操作..连接的路径...位于基本路径组件之外

    尝试将 png 文件上传到管理图像表中时出现错误 可疑文件操作位于 admin products productimage add 连接的路径 product images Laptop Computer 5 copy png 位于基本路径
  • 确保 DateTime 属性返回 DateTimeKind.Utc

    是否可以在实体对象中定义 DateTime 属性Kind DateTimeKind Utc通过使用 edmx 文件或 t4 模板 如果可能使用 t4 请描述如何更改属性 目前该属性生成为 EdmScalarPropertyAttribute
  • iPhone上取消控制播放音乐时如何设置标题?

    我正在开发一个广播应用程序 它支持在后台播放音乐 但我陷入了如何设置音乐标题以取消控制的困境 The difference between my app and Music is as following 我应该怎么做才能让我的应用程序显示
  • 如何判断字符串中的所有字符是否相等

    我需要知道字符串中的所有字符是否都相等 由同一字符组成 该函数必须返回 true 或 false 具体取决于字符串的所有元素是否等于特定字符 我编写的这个函数运行良好 但我正在寻找更优化 最快 的解决方案 字符串可以有数千个字符 funct
  • python中大写字母组的分割

    我正在尝试使用大写字母作为分隔符来标记多个字符串 我已经找到了以下代码 token a for a in re split r A Z a z ABCowDog if a print token 正如预期的那样 我得到了回报 A B 牛 狗
  • Ruby:为什么所有坐标都会在数组数组中更新?

    我正在尝试更改特定坐标 但数组正在全部更新 目标是改变fixed属性为单个坐标 class Case attr accessor fixed def initialize self fixed false end def fixed fix
  • 如何使用 javascript 或 Jquery 更改屏幕方向?

    我正在使用 Phonegap 为 Android 和 iphone 开发一个应用程序 当我从一个页面导航到另一页面时 我需要更改屏幕方向 任何人都可以告诉它如何通过 java 脚本或 jquery 来完成吗 谢谢 你可以试试这个 windo
  • 如何使用 python 在 selenium 中加载 chrome 驱动程序中的扩展

    我打开启用了 Browsec 扩展的 Chrome 浏览器的所有努力都失败了 这是我上次尝试过的 Configure the necessary command line option options webdriver ChromeOpt
  • 同一类的多个领域表

    我有一个 RealmObject 类 我想要同一类的多个表 我可以在单个领域 数据库 中执行此操作吗 或者我需要有多个领域 每个领域一个表 如果必须是多个Realm Realm切换过程有多快 我想要同一类的多个表 那么你有两个合理的选择 1
  • JavaScript 在 JSON 对象中递归搜索

    我正在尝试返回 JSON 对象结构中的特定节点 如下所示 id 0 children id 1 children id 2 children 所以这是一个树状的子父关系 每一个node有一个唯一的ID 我正在尝试寻找一个具体的node像这样
  • 查找总和为给定数字的所有可能子集

    我正在学习Python 但我有一个问题 这似乎是一个简单的任务 我想找到总和为给定数字的所有可能的数字组合 例如 4 gt 1 1 1 1 1 1 2 2 2 1 3 我选择生成所有可能的子集 2 n 的解决方案 然后仅生成总和等于数字的子
  • 如何在 Chrome 扩展中的后台脚本之间传递变量值

    我正在开发一个谷歌浏览器扩展 我在我的后台 javascript 文件 example js 之一中为变量设置了一个值 我需要访问该值或将其传递给另一个后台 javascript 文件 extjs js 我该怎么做 有全局变量的概念吗 我的