Можно ли удалить теги script в <head>
клиентского документа HTML-документа и до выполнения этих тегов?
На стороне сервера я могу вставить <script>
выше всех других тегов <script>
в <head>
, кроме одного, и я хотел бы удалить все последующие скрипты. У меня нет возможности удалять теги <script>
со стороны сервера.
Что я пробовал:
(function (c,h) {
var i, s = h.getElementsByTagName('script');
c.log("Num scripts: " + s.length);
i = s.length - 1;
while(i > 1) {
h.removeChild(s[i]);
i -= 1;
}
})(console, document.head);
Однако зарегистрированное количество скриптов выходит только на 1, так как (как указывал @ryan) код выполняется до того, как DOM будет готов. Хотя обертка кода выше в обратном вызове события document.ready
позволяет правильно подсчитать количество тегов <script>
в <head>
, ожидая, пока DOM не будет готов, чтобы предотвратить загрузку скриптов.
Есть ли надежное средство манипулирования HTML до готовности DOM?
Фон
Если вам нужен больше контекста, это часть попытки консолидации скриптов, где нет возможности для агрегации на стороне сервера. Многие загружаемые библиотеки JS находятся на CMS с ограниченными параметрами конфигурации. Содержимое в основном статично, поэтому очень мало внимания уделяется ручному агрегированию JavaScript и его обслуживанию из другого места. Любые предложения по альтернативным методам агрегирования также приветствуются.