Я разработал 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?