在对另一个我的问题发表评论后,我问自己是否有办法获取页面上加载的所有 js 代码的列表。类似于萤火虫或铬检查员所做的事情。
有没有一种纯javascript方式呢?
一种方法是抓取脚本标签,但是您可能会错过动态加载的 js。我希望有一个 API。
在另一个问题的情况下,可以对所有脚本进行 grep 调用,console.debug()
以防止忘记它们并让它们进入生产环境。
谢谢
在对另一个我的问题发表评论后,我问自己是否有办法获取页面上加载的所有 js 代码的列表。类似于萤火虫或铬检查员所做的事情。
有没有一种纯javascript方式呢?
一种方法是抓取脚本标签,但是您可能会错过动态加载的 js。我希望有一个 API。
在另一个问题的情况下,可以对所有脚本进行 grep 调用,console.debug()
以防止忘记它们并让它们进入生产环境。
谢谢
我想不出不需要大量工作的东西。这是我最初的失败尝试。当它试图遍历窗口的所有内部属性时,它会进入无限递归。
/**
* 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 中这样做?
使用 jQuery:
$(document).ready(function() {
$('script').each(function() {
if($(this).attr('src')) {
alert($(this).attr('src'))
}
else {
alert("inline")
}
})
});
这就是萤火虫的做法。我想没有更好的方法了。
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