当前位置: 首页 > 面试题库 >

将参数传递给使用chrome.tabs.executeScript()注入的内容脚本

宗政深
2023-03-14
问题内容

如何在使用以下方式注入的内容脚本文件中将参数传递给JavaScript:

chrome.tabs.executeScript(tab.id, {file: "content.js"});

问题答案:

没有“将参数传递到文件”这样的事情。

可以 执行的操作是 执行文件 之前 插入内容脚本,或者 插入文件 之后 发送消息。我将在下面显示这些不同方法的示例。

在执行JS文件之前设置参数

如果要在插入文件之前定义一些变量,只需嵌套chrome.tabs.executeScript调用:

chrome.tabs.executeScript(tab.id, {
    code: 'var config = 1;'
}, function() {
    chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});

如果您的变量不是那么简单,那么我建议使用JSON.stringify来将对象转换为字符串:

var config = {somebigobject: 'complicated value'};
chrome.tabs.executeScript(tab.id, {
    code: 'var config = ' + JSON.stringify(config)
}, function() {
    chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});

使用前一种方法,可以按content.js以下方式使用变量:

// content.js
alert('Example:' + config);

在执行JS文件后设置参数

前面的方法可用于设置JS文件之后的参数。您可以使用消息传递API来传递参数,而不是直接在全局范围内定义变量:

chrome.tabs.executeScript(tab.id, {file: 'content.js'}, function() {
    chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
});

在内容脚本(content.js)中,您可以使用chrome.runtime.onMessage事件监听这些消息,并处理该消息:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    // Handle message.
    // In this example, message === 'whatever value; String, object, whatever'
});


 类似资料:
  • 问题内容: 我有一个名为的MySQL脚本文件,其中包含: 我在MySQL控制台中,如何将参数传递给脚本?这不会转发变量: 问题答案: 您可以使用用户变量来实现您描述的行为。在将变量用作模式标识符而不是数据值时,必须使用准备好的语句,以便可以动态组成查询。 : 调用为

  • 当用作npm脚本参数时,是否可以调用从yargs检索密钥? OSX终端中的用户类型: 执行package.json: 这导致了 只有在package.json中硬编码时,这才有效,但我需要它是可配置的。 正如我所说的,我使用的是args,因为它似乎可以很容易地按名称检索键(与数组相反)。接受建议。 我错过了什么? 更新11-07-2017相关:发送命令行参数到npm脚本 但是,传入命令行OR会产生

  • 我正在尝试从使用自由式詹金斯构建切换到管道项目。 我喜欢它的许多方面,但我希望我可以使用多分支管道,因为它更适合我们公司,但目前这不是一个选择。 我们目前所做的是创建一个名为

  • 问题内容: 是否可以通过命令行将参数传递给MySQL脚本? 在此示例中,类似于@start_date的内容: 问题答案: 发现在网络上的答案在这里。 基本上,假设我们要运行以下查询: 我们可以这样传递“ start_date”和“ end_date”:

  • 问题内容: 我有一个Linux bash脚本“ myshell”。我希望它读取两个日期作为参数,例如:。我是Java程序员,但不知道如何编写脚本来完成此任务。 脚本的其余部分如下所示: 问题答案: 您在脚本中使用,例如

  • 我正在使用注释处理来生成一些类...我有两个模块,处理器本身和使用它的“客户端”模块。我想通过客户端向处理器传递一个参数,我可以这样做 如何在处理器端检索此参数?