Нечто подобное будет делать в современных браузерах с поддержкой ECMAScript 6. Однако некоторые скрипты могут удалить соответствующие теги, которые скрывали бы их из этого списка.
var jsFilePaths = Array.prototype.slice
.apply(document.querySelectorAll('script'))
.filter(s => s.src)
.map(s => s.src);
Используйте нормальный for
цикл, если лямбды не вариант.
Сценарии, которые были загружены с помощью некоторого метода загрузки данных, такого как XHR или JSONP, а затем выполнены через eval
или new Function
, также не отображались.
Если вам нужно перехватывать и записывать XHR следует и не имеет централизованного места, где сделано все XHR следует, вам, вероятно, нужно переопределить XMLHttpRequest
и добавить некоторую логику в его readystatechange
случае проверить, является ли найденный ответ исполняемый JavaScript, см. этот вопрос для получения дополнительной информации: How to easily listen for xhr requests with javascript?.
Если вам нужно перехватывать все случаи, когда <script>
добавляется в DOM или с его атрибутом src
манипулируют, вы можете использовать DOM MutationObserver
см an MDN article для получения дополнительной информации.
Возможно, вам также потребуется перехватить document.write
и посмотреть, добавляет ли какой-нибудь скрипт дополнительные встроенные скрипты. Кроме того, не скриптовые элементы, такие как <img/>
, также могут запускать скрипты, как в известном хаке XSS <img src="http://nonexistent.url/x.png" onerror="alert('xss!')" />
.
Кроме того, важно отметить, что любое такое XHR-перехват и особенно использование DOM Mutation Events и DOM MutationObserver наносят ущерб производительности страницы, иногда довольно заметно.
Для текущей страницы или всех страниц? Текущую страницу, откройте инструменты dev, посмотрите на вкладку в сети, отфильтруйте скрипты. Или querySelectorAll и цикл по коллекции. Если весь сайт, это означает написание паука. – epascarello
Текущая страница ... Я сделал это, но не было простого способа скопировать все данные одновременно. –