gpt4 book ai didi

javascript - Chrome扩展程序突然出现错误: "cannot access before initialization"

转载 作者:行者123 更新时间:2023-12-02 21:29:21 24 4
gpt4 key购买 nike

在 Chrome 扩展程序中,为了捕获激活或更新的选项卡并从中获取 URL,我使用了类似的结构

chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
if (changeInfo.url) run(tab);
});

chrome.tabs.onActivated.addListener(info => {
chrome.tabs.get(info.tabId, run);
});

const processingTabId = {};

function run(tab) {
if (processingTabId[tab.id]) return;
processingTabId[tab.id] = true;

let newUrl = new URL(tab.pendingUrl || tab.url)
currentHost = newUrl.host;

有时候它就像一个魅力,并且这个扩展正在使用中。但今天,在没有 Chrome 更新或任何代码更改的情况下,我突然意识到,在任何情况下我都没有得到 url,无论是在选项卡激活时,还是在选项卡更新(刷新)时都没有。查看扩展后端,我意识到一个错误,该错误从未存在过:

初始化前无法访问“processingTabId”

这些代码行已被标记:

function run(tab) {
if (processingTabId[tab.id]) return;

有人知道这个错误意味着什么、如何修复以及为什么突然发生吗?

最佳答案

您需要在调用使用它的 run() 函数之前初始化 processingTabId。因此,在添加调用 run() 的监听器之前,请将声明放在顶部。

const processingTabId = {};

chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
if (changeInfo.url) run(tab);
});

chrome.tabs.onActivated.addListener(info => {
chrome.tabs.get(info.tabId, run);
});

function run(tab) {
if (processingTabId[tab.id]) return;
processingTabId[tab.id] = true;

let newUrl = new URL(tab.pendingUrl || tab.url)
currentHost = newUrl.host;

关于javascript - Chrome扩展程序突然出现错误: "cannot access before initialization",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60660384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com