谷歌浏览器扩展竞争条件

时间:2021-01-12 22:49:18

标签: javascript html google-chrome google-chrome-extension race-condition

我有一个谷歌浏览器扩展。在 background.js 文件中,它包含这个监听器:

chrome.webRequest.onBeforeRequest.addListener(function(info)
    {
        console.log("On Before request info", info);
    },
    {
        urls: 
        [ 
            "<all_urls>" 
        ]
    },
    [
        "blocking"
    ]
);

我告诉谷歌浏览器使用“--app”命令行参数打开,它打开的 html 页面包含:

<script type="text/javascript">
    let url = new URL(window.location.href);

    let targetUrl = url.searchParams.get("targetUrl");

    if(targetUrl != null)
    {
        targetUrl = unescape(targetUrl);

        console.log("The target url is:", targetUrl);
        
        window.location.href = targetUrl;
    }
</script>

它从 params 中获取一个 url,然后导航到它。

问题是我的 google chrome 扩展的监听器没有被触发。

我发现如果我将其设置为以 1 秒超时进行重定向。

然后它会按预期触发。

这让我相信我的扩展的 background.js 文件在第一页加载之前没有执行。

如何让谷歌浏览器确保在加载第一页之前加载和初始化所有扩展?

0 个答案:

没有答案