2011-09-23 122 views
1

在我的應用程序主頁上,我構建了一個「Widgets」系統。小部件的來源是在服務器端生成的,並通過Ajax推送到客戶端。從Ajax請求執行內聯腳本

Ext.Ajax.request({ 
    url: '/get-widgets', 
    success: function(response) { 
     var boxes = Ext.decode(response.responseText); 
     Ext.each(boxes, function(box) { 
      box.id = 'cell-' + box.cell; 

      var element = Ext.DomHelper.append('canvas', { 
       tag: 'div', 
       id: box.id, 
       cls: 'widget size-' + (box.size || '11'), 
       children: [{ 
        tag: 'div', 
        cls: 'title', 
        html: box.title 
       }, { 
        tag: 'div', 
        cls: 'main', 
        html: box.body 
       }] 
      }, true); 
     }); 
    } 
}); 

的問題是,一些小部件有一些內嵌的JavaScript在自己的身體,需要被執行。這在Firefox中完美工作,但不在Chrome中。

是否有一個標誌或您需要激活的內嵌代碼執行?

回答

1

找到Ext.Element::update()方法的特點是掃描並執行內聯腳本的標誌。我改變我的代碼如下,以利用此方法:

var element = Ext.DomHelper.append('canvas', { 
    tag: 'div', 
    id: box.id, 
    cls: 'widget size-' + (box.size || '11') + ' ' + (box.cls || '') + ' ' + (box.type || ''), 
    children: [{ 
     tag: 'div', 
     cls: 'title', 
     html: box.title 
    }, { 
     id: box.id + '-body', 
     tag: 'div', 
     cls: 'main' 
    }] 
}, true); 

Ext.get(box.id + '-body').update(box.body, true);