0

Как добиться загрузки контентного скрипта ПОСЛЕ выполнения Javascript на странице?

13

У меня есть расширение для браузера, которое должно загружать контентный скрипт searchTopic.js только после полной загрузки страницы, в которую он внедряется (да, я установил параметр "run_at" в "document_end" в манифесте расширения), но на самом деле скрипт загружается раньше, чем все объекты DOM были созданы (критически важные объекты создаются с помощью JavaScript на странице).

В связи с этим у меня возникает вопрос: как мне дождаться выполнения JavaScript на странице? Вот мой манифест:

"content_scripts": [
  {
    "run_at": "document_end",
    "matches": ["https://groups.google.com/forum/*"],
    "js": ["searchTopic.js"]
  }
],

Как я могу решить эту проблему, чтобы скрипт выполнялся только после завершения всех операций на странице?

1 ответ(ов)

0

Элементы script выполняются в порядке их появления на странице. Браузер даже прекращает загрузку контента DOM, если в body есть узлы script. Это работает гарантированно, иначе document.write() перестало бы функционировать.

Так что у вас есть два решения:

  1. Используйте событие onload для загрузки вашего кода.
  2. Добавьте тег <script> в качестве последнего элемента страницы (последнего в элементе body). Этот скрипт будет выполнен после того, как все остальные скрипты завершат свою работу и после того, как тело будет преобразовано в дерево DOM.
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь