我仍然很擅长制作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)
})
非常感谢。