chrome.tabs.executeScript从注入的文件返回background.js的值

St3*_*3ph 3 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(tabs[0].id);
        chrome.tabs.executeScript(tabs[0].id, {file: "do.js"}, function (test){
            console.log(test);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

文件do.js做了一些事情(它没有问题),我想在do.js的末尾返回一个值,但我陷入了代码,因为我找不到解决方案.

do.js

if ( Test1) {
    do something;
    return ok; //how to do that ????
}else{
    do someting;
    return not ok; //how to do ???
}
Run Code Online (Sandbox Code Playgroud)

我的问题是什么是添加到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
Run Code Online (Sandbox Code Playgroud)

谢谢

Chi*_*ice 10

当注入脚本被执行时,chrome.tabs.executeScript的回调将被激活.最后一个语句将作为result参数传递给回调函数.

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
Run Code Online (Sandbox Code Playgroud)