2013-08-19 23 views
6

Mam Ext.panel.Panel i ładowałem zawartość z zewnętrznej strony internetowej do mojego panelu.ExtJS 4.1 ładuje zawartość z zewnętrznej strony internetowej

Próbowałem użyć ładowarkę jak opisano tutaj: loader question

można znaleźć przykład w tym jsfiddle: http://jsfiddle.net/eternasparta/sH3fK/

Ext.require([  
'Ext.form.*', 
'Ext.tip.*' 
]); 


Ext.onReady(function() {  


Ext.QuickTips.init(); 

Ext.create('Ext.panel.Panel',{ 
renderTo: Ext.getBody(), 
height:400, 
    width:400, 
    id:'specific_panel_id' 
}); 

dynamicPanel = new Ext.Component({ 
     loader: { 
      /*load contents from this url*/ 
      url: 'http://it.wikipedia.org/wiki/Robot', 
      renderer: 'html', 
      autoLoad: true, 
      scripts: true 
      } 
     }); 

Ext.getCmp('specific_panel_id').add(dynamicPanel); 

}); 

Prawdopodobnie nie mam rozumieć, jak używać program ładujący (jeśli to możliwe) za pomocą zewnętrznych stron internetowych. Moje pierwsze pytanie brzmi: czy można załadować stronę http://it.wikipedia.org/wiki/Robot do mojego panelu za pomocą programu ładującego?

Drugie pytanie: Jeśli odpowiedź brzmi "nie", w jaki sposób sugerujesz załadować zawartość tej strony?

Dziękuję wszystko

+1

co z iFrame? –

Odpowiedz

10

W przypadku treści zewnętrznych będziesz musiał użyć elementu iframe. Jednak jeśli chcesz wymiarów iframe, który ma być zarządzany przez jego panelu pojemnika, będziesz musiał zrobić to komponent, a nie tylko za pomocą html właściwość:

Ext.define('MyIframePanel', { 
    extend: 'Ext.panel.Panel', 
    layout: 'fit', 
    items: [{ 
     xtype: 'box', 
     autoEl: { 
      tag: 'iframe', 
      src: 'http://it.wikipedia.org/wiki/Robot', 
     }, 
    }] 
}); 

Patrz także przykład z oknem i dynamicznego ładowania strony w mój ostatni wpis na blogu: http://nohuhu.org/development/using-render-selectors-to-capture-element-references/.

+0

Osiągnąłem niezależnie twoje proponowane rozwiązanie. Dziękuję wam wszystkim – Marco

3

Jest to względy bezpieczeństwa (Access-Control-Allow-Origin).

można po prostu ustawić „HTML” właściwości panelu jako:

html: '<iframe src="http://it.wikipedia.org/wiki/Robot"></iframe>', 

Patrz: http://jsfiddle.net/sH3fK/2/

Jeśli załadować stronę z tej samej domeny, można po prostu ustawić „Loader” własność Twój panel:

Ext.create('Ext.panelPanel', { 
    ... 
    loader: { 
     url: 'content.html', //<-- page from the same domain 
     autoLoad: true 
    }, 
    renderTo: Ext.getBody(), 
    ... 
}); 
+0

Ale myślę, że nawet jeśli ten plik html znajduje się w twojej domenie, to po prostu nie ładuje skryptów zapisanych na tej stronie html; – Asqan

Powiązane problemy