简体   繁体   English

如何在Chrome扩展程序API中添加回调函数?

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

Actually, I want to use webRequest to modify cookie before request sending. 实际上,我想在请求发送之前使用webRequest修改Cookie。 My own cookie data is stored in extension's storage, but getting data from storage is asynchronous. 我自己的cookie数据存储在扩展程序的存储中,但是从存储中获取数据是异步的。 So how can I modify the request's cookie? 那么,如何修改请求的Cookie?

I want to do like this: 我想这样做:

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);

How can I add a callback argument to chrome.webRequest.onBeforeSendHeaders.addListener callback function, or any other solution? 如何在chrome.webRequest.onBeforeSendHeaders.addListener回调函数或任何其他解决方案中添加回调参数?

If you do want to do that, use Promise 如果您确实想这样做,请使用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);

Recommended 推荐的

See Synchronous call in Google Chrome extension and Asynchronous operation in blocking chrome.webRequest.onBeforeSendHeaders listener , it's recommended that if you could make a copy outside of the listener, or if possible, save the storage using localStorage , it is synchronous. 请参阅Google Chrome扩展程序中的同步调用阻止chrome.webRequest.onBeforeSendHeaders侦听 器中的 异步操作,建议您可以在侦听器外部进行复制,或者如果可能的话,使用localStorage保存存储,则该存储是同步的。

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

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