Вы идете в правильном направлении: вы можете использовать свойство run_at , но ваш манифест должен выглядеть примерно так:
"content_scripts": [
{
"matches": ["<all_url>"],
"js": ["content1.js"],
"all_frames": true,
"run_at": "document_start"
},
{
"matches": ["<all_url>"],
"js": ["content2.js"],
"all_frames": true,
"run_at": "document_end"
}]
Это должен быть массив объектовопределяя все сценарии содержимого вместо объявления свойства content_script
дважды.
Если вы используете jQuery, вы также можете использовать $(document).ready()
следующим образом:
const func1 = params => {
// Stuff that will happen as soon as it can
};
$(document).ready(() => {
// stuff that will happen when DOM is ready
});
Если вы не используете jQuery, вы можете просто выполнить быстрый поиск в Google, чтобы найти альтернативы для $(document).ready
в vanilla js.
Другое решение: вы можете использовать его для программного внедрения скрипта контента из фонового скрипта, используя chrome.tabs.executeScript()
docs .