繁体   English   中英

闭包处理程序给出 TypeError: foo is not a function

[英]Closure handler gives TypeError: foo is not a function

我正在制作一个 Chrome 扩展,有人可以在其中使用特定站点上的上下文菜单,从中获取一些图像并将它们加载到新选项卡(扩展文件夹中的 html 模板文件)。

问题是我希望图像在选项卡上保持不变,直到它关闭; 所以不要重装

不久前,我发现了一些可以实现这一点的代码,但我不断收到错误消息,即我的变量 / function 不是 function。 任何帮助是极大的赞赏。

错误是在magic(tabId);的行上抛出的。 叫做'。

这就是magicpendingTabs里面的内容输出

代码库

let pendingTabs = new Array();

chrome.tabs.onUpdated.addListener(
    function(tabId, changeInfo, tab) {

        //Execute the handler
        const magic = pendingTabs[tabId];
        magic(tabId);
        // Delete the handler
        delete pendingTabs[`foobar`];
});

function sendImages(tabId, response, tabTitle) {
    const urls = response.urls;
    
    chrome.tabs.create({url: chrome.runtime.getURL('html/images.html')}, function(tab) {            


        function handler(tabId) {
            chrome.tabs.sendMessage(tabId, {urls: urls});
        };
        
        pendingTabs[tab.id] = handler;
    });
}

我需要在 magic() 上添加一个 if 来测试它是否未定义,然后错误像奇迹一样消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM