返回chrome.tabs.executeScript的值的问题

时间:2016-12-17 01:39:25

标签: javascript google-chrome-extension

我仍然很擅长制作Google Chrome扩展程序,但我遇到了这个问题:

我想用chrome.tabs.executeScript创建一个可以重用代码的函数,这就是我所做的:

function get(code){

   chrome.tabs.executeScript({
         code: '(function(){return ' + code + ' })();'
     }, function(results) {
            console.log("This log is inside the exec function: " + results[0]);
            return results[0];
    });    
}

然后我通过以下方式调用该函数:

console.log("This log is called externally: " +  get("document.getElementsByClassName('test-class')[0].innerText"))

并且,扩展程序主页中的HTML:

<div class="test-class">This is testing text.</div>

但最终在控制台面板中得到了结果,我收到了以下消息:

This log is called externally: undefined
This log is inside the exec function: This is testing text.

哪个不好,因为我希望它工作并通过调用get()来获得结果,但不是在chrome.tabs.executeScript本身内。

我从建议的副本中得到this link,我读过它,问题的例子是jQuery Ajax调用,它使用了Promise(返回整个ajax调用),但对于chrome.tabs.executeScript,我真的无法使用Promise在线找到任何相关文档。

虽然我尝试了类似的东西,但它不起作用。:

function get(code){
        return chrome.tabs.executeScript({
        code: '(function(){return ' + code + ' })();'
    });
}

var result = get("document.getElementsByClassName('pNickname')[0].innerText")

result.then(function(value){
    console.log(value)
})

非常感谢。

0 个答案:

没有答案