WebExtensions - 阻止HTTP请求直到事件触发

时间:2018-03-15 18:07:03

标签: javascript http firefox firefox-webextensions

我正在构建一个扩展,其基本概念是:

  1. 拦截匹配网址格式的HTTP请求(我们称之为example.com/match)
  2. 拦截HTTP请求时,阻止它并在页面中插入一些HTML
  3. 等到点击事件,然后插入HTML然后#34;发布" HTTP请求。
  4. 我得到1和2,它使用后台脚本和内容脚本。诀窍是可以阻止http请求的函数也必须返回它,此时请求被释放。文档在这里:

    这是我在background.js中的实现:

    browser.webRequest.onHeadersReceived.addListener(
        processResponse, 
        { urls: ["https://example.com/match/*"] }, 
        ["blocking", "responseHeaders"]
    );
    
    async function processResponse(details){
        //Send a message to the tab's content script to inject HTML
        browser.tabs.sendMessage(details.tabId, {"insertHTML": true});
    
        await ???
    
        return {requestHeaders: details.requestHeaders};
    }   
    

    我非常确定这需要使用异步功能完成,如上所述。但是,await希望Promise能够继续解决,并且我无法在后台脚本中从特定插入HTML的内容脚本中将promise传递给该函数。

    有什么想法吗?这让我有点困难了。

1 个答案:

答案 0 :(得分:0)

创建一个仅在从后台脚本收到消息时解析的承诺。