如何找出javascript中加载的javascripts?

时间:2010-11-03 20:49:28

标签: javascript resources inspector

继续评论我的另一个问题后,我问自己是否有办法获取页面上加载的所有js代码的列表。像萤火虫或铬检查员那样的东西。

是否有纯粹的javascript方式?

一种方法是刮取脚本标签,但是你可能会错过动态加载的js。我希望有一个API。

在另一个问题的情况下,可以使用console.debug()来调用所有脚本以防止忘记它们并让它们投入生产。

由于

3 个答案:

答案 0 :(得分:1)

我想不出一些不需要大量工作的事情。这是我最初的失败尝试。当它试图迭代窗口的所有内部属性时,它会进入无限递归。

/**
 * 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中这样做?

答案 1 :(得分:0)

使用jQuery:

$(document).ready(function() {


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

});

答案 2 :(得分:0)

这就是萤火虫的做法。我想当时没有更好的方式。

    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