2010-02-08 3 views
5

Quelle est la méthode appropriée pour fermer un onglet ExtJS par programmation?Méthode appropriée pour fermer un onglet ExtJS

Je dois faire ce travail dans IE6; Bien que supprime l'onglet de l'onglet TabPanel fonctionne, je vois un avertissement IE: Cette page contient des éléments sécurisés et non sécurisés ... Lorsque je clique sur le X sur l'onglet, je ne vois pas cet avertissement. Donc, clairement quelque chose d'intelligent se passe lorsque je clique sur le X.

Remarque: l'avertissement se produit lorsque j'utilise tabPanel.remove (aTab, true) et il ne se produit pas lorsque j'utilise tabPanel.remove (aTab, false). Ainsi, l'avertissement de contenu mixte est affiché pendant le retrait et destruction suivante du panneau.

Est-il sensé de simuler le clic sur un onglet?

EDIT

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

Répondre

7

Vous retirez l'élément de l'onglet directement, ou vous supprimez le composant onglet de son contenant? .: par exemple

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

contre

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

Les deux devraient travailler sur OK en termes de nuking le balisage onglet, mais en supprimant l'élément peut directement avoir des conséquences indésirables. Si vous faites le dernier (correct), alors je ne suis pas sûr de ce que le problème pourrait être. Je n'ai pas IE 6 à portée de main moi-même.

+0

Je fais le dernier. Le code fonctionne bien - en ce que le panneau est supprimé - mais je vois l'avertissement. Je devrais ajouter que je détruis le panneau pendant l'enlèvement; Je suis certain que l'avertissement se produit pendant la destruction. – Upperstage

+0

Je suppose que votre page fonctionne sous https - avez-vous vérifié que toutes les images et autres ressources utilisent des URL https? Encore une fois, je ne sais pas pourquoi cela ne serait différent que dans les circonstances que vous avez mentionnées. En interne, onStripMouseDown() de TabPanel est la méthode à regarder, et this.remove (t.item); Notez que vous passez false pour autoDestroy - détruisez-vous l'onglet plus tard? –

+0

https: oui. Toutes les ressources https: oui. onStripMouseDown effectue en effet this.remove (t.item) sans détruire. Je détruis l'onglet quand je l'enlève; Je crois que le problème se produit pendant la destruction (peut-être la destruction est bâclée?). Est-ce logique d'enlever sans détruire? On dirait une fuite de mémoire pour moi. – Upperstage

0

Ceci ferme un onglet en cliquant sur le bouton du milieu de votre souris.

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; 
    }); 

Espérons que ça aide !! =)

Questions connexes