2010-11-30 14 views
1

J'ai un groupe d'onglets jQuery créés dynamiquement. Chaque onglet a un iFrame avec lui. Voici une version dépouillée du code:Décharger iFrame avant la suppression des onglets de l'interface utilisateur jQuery

$tabs = $('#myTabs').tabs({ 
    tabTemplate: '<li class="myTabClass"><a href="#{href}">#{label}</a> <span class="ui-icon ui-icon-close">Remove Tab</span></li>', 
    add: function (event, ui) { 
     $(ui.tab.hash).append('<iframe src="BlankTabHTML.htm" id="tabFrame' + GLOBALTabIndex + '" class="tabIFrames" frameBorder="no"></iframe>'); 
    }, 
    remove: function (event, ui) { 
     GLOBALTabIndex --; 
    } 
    }); 

Mon problème est le suivant: Lorsqu'un utilisateur clique sur le « x » pour supprimer un onglet, l'onglet et iFrame sont supprimés, mais onbeforeunload ne se déclenche pas. Je souhaite décharger l'iframe en définissant le cadre sur une page fictive, puis vérifier si l'utilisateur clique sur "ok" ou "cancel" dans la boîte de dialogue onbeforeunload pour savoir si l'onglet doit être fermé. Si elles cliquent sur Annuler, je dois annuler la suppression de l'onglet. J'ai regardé la documentation de jQuery et n'arrive pas à trouver un moyen d'annuler la suppression de l'onglet une fois qu'il est appelé. Je sais que c'est vraiment quelques questions en une, des idées?

Répondre

0

N'appelez pas tab(). Remove() directement en cliquant sur la plage.

Supprimez simplement l'iframe comme vous l'avez dit (en changeant le src).

Premier onbeforeunload tirera. Plus tard, si l'utilisateur choisit "oui", onunload tirera, où vous pouvez également supprimer la languette (il n'y a aucun moyen de déterminer directement, ce que l'utilisateur choisit pour beforeunload, vous devez observer décharger, il est clair que le l'utilisateur choisit "oui" si le feu se déclenche)

+0

J'aime cette idée. Je vais essayer. –

+0

Ca marche super bien! Merci! J'ai fini par utiliser un événement sur le chargement de la page factice. –