Как посмотреть структуру загруженной в данный момент конструкции JavaScript? - PullRequest
0 голосов
/ 03 марта 2011

Я разработал PHP-фреймворк, который генерирует код ExtJS в форме приложения.

Это предполагает построение полного литерала объекта ExtJS на первомВызовите, например:

Ext.onReady(function(){
    menuItemStart = new Ext.Panel({
        id: 'panelStart',
        title: 'Start',
        html: 'This is the start menu item.',
        cls:'menuItem'
    });
    ...

, а затем навигация в приложении состоит из обработчиков событий , которые загружают файлы PHP через AJAX, которые выводят код ExtJS, а затем выполняют этот код с помощью этой функции:

function loadViewViaAjax(url, paramTargetRegion) {
    Ext.Ajax.request({
        url: url,
        success: function(objServerResponse) {
            var responseText = objServerResponse.responseText;
            var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi;
            while(scripts=scriptsFinder.exec(responseText)) {
                eval(scripts[1]);
            }
        }
    });
}

Это хорошо работает.

Однако теперь я иногда получаю ошибки, которые говорят syntax error в строке, в которой нет синтаксической ошибки или что есть missing } in the XML structure, когда нет ни одного пропущенного (насколько я понимаю структуру JavaScript в то время).

Поскольку я постоянно заменяю фрагменты JavaScript, например, так:

var start_info_panel = new Ext.Panel({
    padding: 10,
    style: "margin: 10px",
    width: 300,
    html: 'This is an <span id="internal_link_001" class="internal_link">internal link to modules2</span>.<p>'
});
replaceComponentContent(targetRegion, start_info_panel);

где:

function clearExtjsComponent(cmp) {
    var f;
    while(f = cmp.items.first()){
        cmp.remove(f, true);
    }
}

function replaceComponentContent(cmpParent, cmpContent, clear) {
    clear = (typeof clear == 'undefined') ? false : clear;
    if(clear) {
        clearExtjsComponent(cmpParent);
    }
    cmpParent.add(cmpContent);
    cmpParent.doLayout();
}

Основной объект ExtJS меняет свою структуру.

В Firebug я могу просматривать текущие CSS, HTML DOM и оригинальную структуру Javascript, но как можно просмотреть текущий структура Javascript?

Ответы [ 2 ]

0 голосов
/ 07 марта 2011

Вы также можете назвать свои eval-скрипты: http://blog.getfirebug.com/2009/08/11/give-your-eval-a-name-with-sourceurl/

0 голосов
/ 04 марта 2011

Разве ваш evalled-скрипт не указан на вкладке "scripts" в firebug?Этот курс не отображает «текущее» состояние вашего приложения, но, по крайней мере, в нем есть проверенные сценарии, если я прав.

...