2010-11-03 6 views
2

Следуя за комментарием по другому вопросу, я спросил себя, есть ли способ получить список всех js-кодов, загружаемых на страницу. Что-то вроде того, что делает блокбастер или хромовый инспектор.Как узнать, какие javascripts загружены в javascript?

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

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

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

Благодаря

+0

Это, безусловно, является чисто Javascript способ сделать это; подумайте о firebug lite. –

+0

В мои ранние дни в JavaScript я сделал что-то сумасшедшее. Я написал код, который повторял все возможные имена и искал действительные объекты/функции. В крайнем случае это может частично ответить на ваши потребности, найти хотя бы часть «загруженных» функций и/или объектов. Сообщите мне, если хотите, и я его выкопаю. –

ответ

0

с помощью JQuery:

$(document).ready(function() { 


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

});

+0

Не совсем то, что я ищу. Это то, что я уже предложил в своем вопросе. – balu

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

Красивый подход. Мне просто было интересно узнать, есть ли в этом простой подход. – balu

+0

Я думаю, вы зря теряете время! –

+0

Yup, похоже я. – balu

0

Вот как это делает 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

К сожалению, ваш код не работает с тем же разрешением, что и firebug. Вы можете создать плагин, чтобы сделать это, хотя ... –