Определение того, был ли выполнен скрипт - PullRequest
0 голосов
/ 07 февраля 2019

Если тег сценария вставлен с использованием HTMLElement.innerHTML, он не выполняется.Есть ли способ определить, глядя на HTMLScriptElement, что он никогда не выполнялся?

Более длинный контекст: приложение React с рендерингом на стороне сервера использует React dangerouslySetInnerHTML для внедрения динамического содержимого, которое может включать <script> теги.Когда на стороне сервера рендеринга эти скрипты работают, когда на стороне клиента рендеринга они не делаютЯ хотел бы использовать ловушки жизненного цикла для проверки выполнения сценариев на стороне клиента без выполнения тех, которые уже были выполнены из-за рендеринга на стороне сервера.

1 Ответ

0 голосов
/ 07 февраля 2019

Я нашел обходной путь React, который на самом деле не решает основной вопрос;вместо того, чтобы пытаться определить, был ли данный элемент сценария действительно выполнен, я строю список всех сценариев на странице до , вызывается метод рендеринга (в конструкторе компонентов), а затем при воссоздании элементов сценария я простоигнорируйте все, для которых я уже видел источник.

Это позволяет мне идентифицировать все сценарии, которые были добавлены рендером, потому что их не было в исходном наборе.

Все еще любопытноо первоначальном вопросе, поскольку это позволило бы более элегантное решение.

...