Почему я получаю ошибки в ext-all-debug.js в строках 4236 - 4242? - 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]);
            }
        }
    });
}

Это хорошо работает.Тем не менее, у меня теперь есть такая ситуация, когда при загрузке страницы из PHP вместо запускаемого обработчика события ExtJS я получаю ошибки, которые меняются, но все они происходят из одного блока кода.в файле ext-all-debug.js, а именно в строке 4236 и строке 4242:

enter image description here

Кто-нибудь испытывал что-либо подобное или знает, что может быть причиной этого?

Приложение

Да @ChrisR, вот ошибка, которую я могу воспроизвести на моей машине:

enter image description here

Он говорит, что этополучаю сообщение об ошибке в четвертой строке этого кода, но если я щелкну по нему, я перейду к строке 4242, показанной выше в коде библиотеки ExtJS.

<script type="text/javascript">
    clearExtjsComponent(targetRegion);
    var panel_form = new Ext.FormPanel({
        labelWidth: 100,
        frame:true,
        style: 'margin: 10px',
        title: 'Test Product (TEST PAGE 2)',
        bodyStyle:'padding:5px 5px 0',
        width: 500,
        defaultType: 'textfield',

        items: [{
                fieldLabel: 'ID',
                value: "111",
                name: 'id',
                width: 370,
                hidden: false,
                style: 'text-align: right',
                name: 'id',
                width: 50,
                hidden: false,
            },{
                fieldLabel: 'Product',
                value: "Paper",
                xtype: 'displayfield',
                name: 'product',
                width: 370,
                hidden: false,
            },{
                fieldLabel: 'Label',
                value: "none",
                name: 'product3',
                width: 370,
                hidden: false,
            },{
                fieldLabel: 'Label',
                value: "first line\<br/>second line\<br/>third line",
                xtype: 'displayfield',
                height: 100,
                xtype: 'displayfield',
                name: 'product4',
                width: 370,
                hidden: false,
            }
        ],

        buttons: [{
                text: 'Save',
                handler: function() {
                    if(panel_form.getForm().isValid()){
                        panel_form.getForm().getEl().dom.action = 'backend/application/help/test';
                        panel_form.getForm().getEl().dom.method = 'POST';
                        panel_form.getForm().submit({
                            success : function(form, action) {
                    replace_region_with_uri_content('backend/modules');
                            }
                        })
                    } else {
                        Ext.Msg.minWidth = 360;
                        Ext.Msg.alert('Invalid Form', 'Some fields are invalid, please correct.');
                    }
                }
            },{
                text: 'Cancel',
                handler: function(){
                    replace_region_with_uri_content('backend/modules');
                }
            }]
    });
    replaceComponentContent(targetRegion, panel_form);

    hideComponent(regionHelp);
</script>

1 Ответ

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

Это на IE? Если это так, все запятые в вашем коде могут быть проблемой (они, безусловно, проблема). Кроме того, в вашем первом элементе много дубликатов. Попробуйте время от времени запускать JSLint в своем коде, чтобы ловить подобные вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...