我正在使用一个内容脚本,该脚本从
chrome.storage.local.get
接收数据,然后执行。
我希望它在网站脚本开始执行之前完成所有执行。
问题是:从
chrome.storage.local.get
获取数据需要时间并且是异步的,因此它在网站脚本之前开始执行,但在网站脚本之后完成。
有办法解决吗?比如,在主线程完成之前阻塞主线程之类的?或者不使用
chrome.storage.local.get
向其传递信息?或者我应该用chrome.webRequest
延迟页面的所有请求?
"content_scripts": [
{
"run_at": "document_start",
"matches": ["<all_urls>"],
"js": ["content.js"],
"match_about_blank" : true
}
],
内容.js:
(async () => {
// website's scripts are not yet executed
let data = await chrome.storage.local.get("data");
// website's scripts are already executed
})();
您无法从 JavaScript 中的异步操作中获取同步结果。你就是做不到。
也许您可以使用代理服务器执行 MITM(中间人),将网页代理到您控制的服务器。
https://developer.chrome.com/docs/extensions/reference/api/proxy