Как открыть расширение chrome сразу после открытия (изменения url) вкладки?
Есть расширение в React.js, и я знаю, что возможно автоматически открыть расширение сразу после того, как вкладка открыта или изменился url, даже если страница грузится 4-5 и более секунд. Пока что расширение открывается после того, как загрузится страница (иногда 4-5 и более секунд)
Код выглядит примерно так (background.js):
//...
chrome.tabs.onActivated.addListener(() => {
setExtension();
});
chrome.tabs.onUpdated.addListener((tabId, changeInfo) => {
if (changeInfo.status === 'loading') {
setExtension();
}
});
content.js:
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
if (msg.type === 'INJECT') {
let modal = document.getElementById('some-modal-id');
if (!modal) {
modal = document.createElement('div');
modal.id = 'some-modal-id';
modal.innerHTML = `<iframe id="modal-iframe"></iframe>`;
document.body.appendChild(modal);
// код со стилизацией iframe
const iframe = document.getElementById('modal-iframe');
iframe.src = chrome.runtime.getURL('index.html');
}
sendResponse({});
}
// ...
}
Пробовала обернуть создание iframe в setTimeout, как советовали здесь wrapping the code that added the iframe to the HTML in setTimeout, но тогда расширение перестало вообще включаться автоматически:
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
if (msg.type === 'INJECT') {
const timeoutID = setTimeout(() => {
let modal = document.getElementById('some-modal-id');
if (!modal) {
modal = document.createElement('div');
modal.id = 'some-modal-id';
modal.innerHTML = `<iframe id="modal-iframe"></iframe>`;
document.body.appendChild(modal);
// some more styling code...
const iframe = document.getElementById('modal-iframe');
iframe.src = chrome.runtime.getURL('index.html');
}
clearTimeout(timeoutID)
sendResponse({});
}, 0)
}
// ...
}
Также пробовала проставить "run_at" на "document_start" в manifest.json, как советовали здесь: в manifest.json нужно добавить run_at со значением document_start, но тоже не помогло, расширение также загружается после того, как полностью загрузится страница
"content_scripts": [{
"js": [ "content.js"],
"css": ["content.css"],
"matches": [ "<all_urls>"],
"run_at": "document_start"
}],