Javascript chrome.tabs.executeScript将值从注入文件返回到background.js

Javascript chrome.tabs.executeScript将值从注入文件返回到background.js,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我做了一个chrome扩展,在用户点击图标后运行(浏览器操作)。 用户单击图标后,文件background.js正在运行。它将检查选项卡,我将在选项卡中插入一个js文件 文件background.js chrome.browserAction.onClicked.addListener(function(tab) { chrome.tabs.query({'url':"URL TO SEARCH"}, function(tabs) { //console.log(tab

我做了一个chrome扩展,在用户点击图标后运行(浏览器操作)。 用户单击图标后,文件background.js正在运行。它将检查选项卡,我将在选项卡中插入一个js文件

文件background.js

chrome.browserAction.onClicked.addListener(function(tab) {

    chrome.tabs.query({'url':"URL TO SEARCH"}, function(tabs) {
        //console.log(tabs[0].id);
        chrome.tabs.executeScript(tabs[0].id, {file: "do.js"}, function (test){
            console.log(test);
        });
    });
});
文件do.js做了一些事情(它没有问题),我想在do.js的末尾返回一个值,但我陷入了代码中,因为我没有找到解决方案

do.js

我的问题是,添加到do.js以返回简单文本值的代码是什么。我读过这篇文章,但我不明白答案

在manifest.json下面

"background": {
    "scripts": ["background.js"]
},
"permissions": [
    "tabs", "http://*/*", "https://*/*","file:///*"
],
"browser_action": {
  "default_title": "Mute Hangout",
  "default_icon": "icon16.png"
},
"manifest_version": 2

谢谢

执行注入脚本时,chrome.tabs.executeScript的回调将被执行。最后一条语句将作为结果参数传递给回调函数

var result;

if (Test1) {
    do something
    result = "ok";
}else{
    do something
    result = "not ok";
}

// pls make sure that the result you want to pass to executeScript callback need to be the last statement of the injecting script
result

非常感谢它的工作,我花了2个小时在这一点上。。。事实上这很简单…不知道为什么会标记为重复-另一个问题是当使用带有“代码”字符串的executeScript时,这个问题是关于“文件”模式的。
var result;

if (Test1) {
    do something
    result = "ok";
}else{
    do something
    result = "not ok";
}

// pls make sure that the result you want to pass to executeScript callback need to be the last statement of the injecting script
result