2014-04-21 104 views
3

我做了一個用戶點擊圖標(瀏覽器動作)後運行的chrome擴展。 用戶點擊圖標後,文件background.js正在運行。它會檢查標籤,我在標籤中注入一個js文件。chrome.tabs.executeScript從注入文件返回background.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

if (Test1) { 
    do something; 
    return ok; //how to do that ???? 
}else{ 
    do someting; 
    return not ok; //how to do ??? 
} 

我的問題是什麼代碼添加到do.js返回一個簡單的文本值。我讀過這question,但我不明白答案。

下面對於manifest.json

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

謝謝

回答

7

當注入腳本exectued chrome.tabs.executeScript的回調將exectued。最後一條語句將作爲結果參數傳遞給回調函數。

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 
+0

非常感謝你的工作,我在這一點上花了2個小時......這其實很簡單...... – St3ph