【问题标题】:How can I add a callback function to chrome extension api?如何向 chrome 扩展 api 添加回调函数?
【发布时间】:2016-04-22 02:30:04
【问题描述】:

其实我想在请求发送前使用 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 回调函数或任何其他解决方案添加回调参数?

【问题讨论】:

    标签: javascript cookies google-chrome-extension


    【解决方案1】:

    如果您确实想这样做,请使用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);
    

    推荐

    请参阅Synchronous call in Google Chrome extension 和Asynchronous operation in blocking chrome.webRequest.onBeforeSendHeaders listener,如果您可以在侦听器之外制作副本,或者如果可能,请使用localStorage 保存存储,这是同步的。

    【讨论】:

    • 是的,localStorage 运行良好,但有一些限制。我不得不重新使用它。谢谢你的回答。
    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多