2016-08-25 3 views
1

Немного нового вопроса, но каков наилучший способ получить список с полным именем всех файлов JS, загруженных на мой сайт?Получить список всех файлов JS, загруженных на веб-страницу

Чтобы уточнить: у меня есть страница www.mypage.com - Я хочу получить список всех файлов JS с их путями полного имени, которые загружаются на эту страницу.

+1

Для текущей страницы или всех страниц? Текущую страницу, откройте инструменты dev, посмотрите на вкладку в сети, отфильтруйте скрипты. Или querySelectorAll и цикл по коллекции. Если весь сайт, это означает написание паука. – epascarello

+0

Текущая страница ... Я сделал это, но не было простого способа скопировать все данные одновременно. –

ответ

1

Вы должны получить все теги сценария первого ::

var scripts = document.getElementsByTagName('script'); 

А затем цикл через него:

for(var i=0;i<scripts.length;i++){ 
scripts[i].src; 
} 
+2

Едва полезно и определенно неполно. Как насчет XHR? – Amit

+0

@Amit: лучшее решение? –

+0

@Jonasw - Вопрос плохо определен ИМО, нет хорошего ответа. – Amit

1

Нечто подобное будет делать в современных браузерах с поддержкой 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 наносят ущерб производительности страницы, иногда довольно заметно.

+0

Sooo, невозможно, не так ли? Это делает этот ответ совершенно бессмысленным, не так ли? Просто отправьте комментарий. – Amit

+0

@Amit. Уважаемый господин, пожалуйста, извините мои скромные усилия, чтобы помочь OP. Нет, вряд ли это будет невозможно, это довольно сложно сделать. Я добавил информацию на свой пост. Тем не менее, насколько мне известно, ответы на StackOverflow должны быть путями, что не всегда является полным решением для кода. –

+0

Это гораздо лучший ответ. Лично я все еще думаю, что самое главное подчеркнуть тот факт, что нет гарантированного метода для достижения этого, но вы покрывали самые важные части. – Amit

Смежные вопросы