当我试图从谷歌文档执行脚本时,我试图做一个简单的扩展,将页面中的文本放入另一个选项卡中的google中,得到以下错误:

我在popup.js中有这个代码(我还在学习)
var getTheText = ()=>{
textfromtab= document.querySelector("p.maintext").textContent;
textfromtab= textfromtab.replace(/["']/g, " ");
chrome.tabs.create({
url: "https://www.google.com/search?q="+textfromtab
});
}
async function getCurrentTab() {
let queryOptions = { active: true, lastFocusedWindow: true };
let [tab] = await chrome.tabs.query(queryOptions);
console.log(tab);
return tab.id;
}
function gettabqu(){
const tabId = getCurrentTab();
chrome.scripting.executeScript(
{
target: {tabId: tabId, allFrames: true},
func: getTheText,
});
}
var textfromtab = "";这是我的manifest.json的权限:
"permissions": ["storage", "activeTab", "scripting","tabs"],这就是我做console.log(tab.id)时得到的

发布于 2022-11-28 14:19:12
问题在于:
const tabId = getCurrentTab();getCurrentTab()是一个asnyc函数。
Asnyc函数总是返回承诺。
因此,当target.tabId应该是一个整数时,它就是一个承诺。
解决方案:
const tabId = await getCurrentTab();但这意味着您还需要使gettabqu()成为一个异步函数,否则您将无法在其中使用await。
https://stackoverflow.com/questions/74601704
复制相似问题