2010-02-08 1 views
5

Qual è il modo corretto di chiudere una scheda ExtJS a livello di codice?Tecnica corretta per chiudere una scheda ExtJS

Ho bisogno di fare questo lavoro in IE6; anche se rimuovi 'la scheda da TabPanel funziona, Vedo un avviso IE: Questa pagina contiene elementi protetti e non protetti ... Quando faccio clic sulla X nella scheda, non vedo questo avviso. Quindi, chiaramente qualcosa di intelligente sta accadendo quando clicco sulla X.

Nota: l'avviso si verifica quando utilizzo tabPanel.remove (aTab, true) e non si verifica quando utilizzo tabPanel.remove (aTab, false). Quindi, l'avviso di contenuto misto viene visualizzato durante la rimozione e distruzione successiva del pannello.

Ha senso simulare il clic su una scheda?

EDIT

IE is telling me I have mixed SSL content when I don't

risposta

7

Stai rimuovendo elemento della scheda direttamente, o stai rimuovere il componente scheda dal suo contenitore? Es .:

Ext.fly('tab-id').remove(); // Element API 

vs.

myTabPanel.remove('tab-id'); // Panel API 

Entrambi dovrebbero funzionare bene in termini di bombardare scheda marcatura, ma rimuovendo l'elemento direttamente può avere conseguenze indesiderate. Se stai facendo il secondo (corretto), allora non sono sicuro di quale potrebbe essere il problema. Io non ho IE 6 a portata di mano.

+0

Sto facendo quest'ultimo. Il codice funziona bene, in quanto il pannello viene rimosso, ma vedo l'avviso. Devo aggiungere che sto distruggendo il pannello durante la rimozione; Sono certo che l'avvertimento si verifica durante la distruzione. – Upperstage

+0

Suppongo che la tua pagina sia in esecuzione in https - hai verificato che tutte le immagini e le altre risorse utilizzano gli URL https? Ancora una volta, non sono sicuro del perché sarebbe diverso solo nella circostanza che hai menzionato. Internamente, onStripMouseDown() di TabPanel è il metodo pertinente da osservare e fa this.remove (t.item); Nota che stai passando false per autoDestroy - stai distruggendo la scheda in seguito? –

+0

https: sì. Tutte le risorse https: sì. onStripMouseDown esegue effettivamente this.remove (t.item) sans destroy. Sto distruggendo la scheda quando rimuovo; Credo che il problema si verifichi durante la distruzione (forse la distruzione è sciatta?). Ha senso rimuovere senza distruggere? Sembra una perdita di memoria per me. – Upperstage

0

Questo chiude una scheda facendo clic sul pulsante centrale del mouse.

var middleClick = $(document).mousedown(function(e) { 
    if(e.which == 2){ 
       var tabPanel = <%= tabPanel.ClientID %>;  
       var activeTab = tabPanel.getActiveTab(); 
       if (e.target.textContent == activeTab.title) { 
        var activeTabIndex = tabPanel.items.findIndex('id', activeTab.id); 
        tabPanel.remove(activeTabIndex); 
       } 
      } 
      return true; 
    }); 

Spero che aiuti !! =)