Как узнать, какие javascript-скрипты загружаются в javascript? - PullRequest
2 голосов
/ 03 ноября 2010

После комментария к другому вопросу я спросил себя, есть ли способ получить список всего кода js, который загружен на странице. Что-то вроде того, что делает Firebug или Chrome инспектор.

Есть ли для этого чистый способ JavaScript?

Один из способов - очистить теги скрипта, но тогда вы можете пропустить динамически загруженные js. Я надеюсь на API.

В случае другого вопроса можно было бы использовать все сценарии для вызовов на console.debug(), чтобы не забыть их и не допустить их запуска в производство.

Спасибо

Ответы [ 3 ]

1 голос
/ 04 ноября 2010

Я не могу придумать что-то, что не требует большой работы. Вот моя первоначальная неудачная попытка. Он входит в бесконечную рекурсию, пытаясь перебрать все внутренние свойства окна.

/**
 * You have to run this in firefox, pass window the first time
 * @return boolean Whether the given object contains a function where its
 * source code contains the word console.
 */ 
function lookForConsole( obj ) {
  var found  = false;
  for (var prop in obj) {
    var current = obj[prop];
    if (typeof current == "function") {

      if (current.toSource.indexOf("console" + ".log") != -1) {
        found = true;
        break;
      }
    } else if (typeof current == "object"){
      found = lookForConsole(current);
      if (found) {
        break;
      }
    }
  }
  return found;
}

Вы когда-нибудь слышали выражение «когда единственный инструмент, который у вас есть, это молоток, каждая проблема выглядит как гвоздь»?

Почему вы делаете это в JS?

0 голосов
/ 05 ноября 2010

Вот как это делает firebug. Я думаю, тогда нет более причудливого пути.

    var doc = Firebug.browser.document;
    var scripts = doc.getElementsByTagName("script");
    var selectNode = this.selectNode = createElement("select");

    for(var i=0, script; script=scripts[i]; i++)
    {
        // Don't show Firebug Lite source code in the list of options
        if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore"))
            continue;

        var fileName = getFileName(script.src) || getFileName(doc.location.href);
        var option = createElement("option", {value:i});

        option.appendChild(Firebug.chrome.document.createTextNode(fileName));
        selectNode.appendChild(option);
    };

http://fbug.googlecode.com/svn/lite/branches/firebug1.3/content/firebug/script.js

0 голосов
/ 03 ноября 2010

с использованием jQuery:

$(document).ready(function() {


$('script').each(function() {
    if($(this).attr('src')) {
        alert($(this).attr('src'))
    }
    else {
        alert("inline")
    }
})

});

...