【发布时间】:2019-10-18 06:20:18
【问题描述】:
我有一个 chrome 扩展,它是一个弹出窗口。 它有一个背景脚本。在这个脚本文件中,我试图插入一个代码以在所有打开的选项卡中执行。
这就是我的做法。
for (var i = 0; i < tablist.length; ++i) {
chrome.tabs.executeScript(tablist[i].id, { file: "js/fuse.min.js"}, function (result) {
chrome.tabs.executeScript(<i want to get tab id here>, { code: code });
});
}
我已经嵌套了“executeScript()”,因为我需要包含一个外部文件。
由于内部函数是回调,所以它是异步的,我不会从父函数中获取标签ID。
如何让 tabid 在嵌套函数中传递? “结果”论点没有它。
【问题讨论】:
-
使用
let而不是var,这样您就可以简单地重复tablist[i].id。更多信息:JavaScript closure inside loops – simple practical example -
你能把
id作为第二个参数传递给回调吗? -
@wOxxOm 我试过了。但它说'我'没有定义。我认为这个解决方案只有在它是一个正常功能时才有效。我的情况不同。这是一个回调函数。
-
@Nuhman 不。它没有用。如果您能提供解决方案,我将不胜感激。
-
@AnilPBabu,
let必须工作,它是标准的 JavaScript,在这种情况下回调没有什么特别之处,所以你一定在某个地方犯了错误。也许你在循环之后改变了tablist,或者别的什么。
标签: javascript google-chrome-extension callback