如何向 chrome 扩展 API 添加回调函数

How can I add a callback function to chrome extension api?

本文关键字:添加 回调 函数 API 扩展 chrome      更新时间:2023-09-26

实际上,我想在发送请求之前使用 webRequest 修改 cookie。我自己的 cookie 数据存储在扩展的存储中,但从存储中获取数据是异步的。那么如何修改请求的 cookie 呢?

我想这样做:

var beforeSendHeadersHandler = {
    func: function(details, addCookie){
        addCookie(details)
        return {requestHeaders: details.requestHeaders}
    },
    filter: {
        urls: ["<all_urls>"]
    },
    extra: ["blocking", "requestHeaders"]
};
chrome.webRequest.onBeforeSendHeaders.addListener(beforeSendHeadersHandler.func,
    beforeSendHeadersHandler.filter,
    beforeSendHeadersHandler.extra);

如何将回调参数添加到chrome.webRequest.onBeforeSendHeaders.addListener回调函数或任何其他解决方案?

如果您确实想这样做,请使用 Promise

var beforeSendHeadersHandler = {
    func: function(details, addCookie){
        var promise = new Promise(function(resolve) {
            chrome.storage.local.get("your key", function(results) {
                resolve(results["your key"]);
            });
        };
        promise.then(function(value) {
           return {requestHeaders: value};
        });
    },
    filter: {
        urls: ["<all_urls>"]
    },
    extra: ["blocking", "requestHeaders"]
};
chrome.webRequest.onBeforeSendHeaders.addListener(beforeSendHeadersHandler.func,
    beforeSendHeadersHandler.filter,
    beforeSendHeadersHandler.extra);

推荐

请参阅 Google Chrome 扩展程序中的同步调用和阻止 chrome.webRequest.onBeforeSendHeaders 侦听器中的异步操作,建议如果可以在侦听器之外创建副本,或者如果可能,使用 localStorage 保存存储,它是同步的。