2009-11-23 6 views
0

This post parle du problème que les onglets jQuery est d'avoir toujours avec le bouton de retour. Ce dont le client a besoin, c'est assez simple: quand il fait marche arrière, il veut revenir à ce qu'il regardait. Mais les onglets jQuery chargent le premier onglet, pas celui qui a été sélectionné lorsque l'utilisateur a quitté la page.onglets jquery retour bouton

J'ai lu le accompanying link et il est écrit "Il est prévu et Klaus y travaille chaque fois qu'il trouve l'heure."

Quelqu'un at-il résolu le problème de bouton de retour avec des onglets de l'interface utilisateur jQuery?

Répondre

3

En utilisant la solution à la servitude de problème historique affiché, une solution sale pour le problème de bouton de retour serait de vérifier périodiquement la location.hash pour voir si elle a changé, et si elle a, feu le cliquez sur événement du lien approprié.

Par exemple, en utilisant la mise à jour zachstronaut.comjQuery Tabs Demo, vous pouvez ajouter à la $ (document) .ready rappel, et il permettrait effectivement le bouton de retour pour changer d'onglet, sans plus de retard 500ms:

j_last_known_hash = location.hash; 
window.setInterval(function() { 
    if(j_last_known_hash != location.hash) { 
     $('#tabs ul li a[href="'+ location.hash +'"]').click(); 
     j_last_known_hash = location.hash; 
    } 
}, 500); 
+0

Génie! Cela a fonctionné! –

3

Avez-vous fatigué de mettre à jour l'emplacement du navigateur lorsque vous changez d'onglet? http://www.zachstronaut.com/posts/2009/06/08/jquery-ui-tabs-fix.html

+0

deux cette réponse et la réponse ci-dessus aidé à la solution que je avais besoin. Avec juste votre solution, il reviendrait à l'onglet correct, mais si vous avez basculé entre plusieurs onglets, le bouton de retour a été brisé sans le script ci-dessus pour vérifier toutes les 1/2 secondes si le hachage a changé. – billvsd

0

si vous aviez une classe sur votre conteneur onglet qui était TabContainer, mettre à jour l'URL lorsque l'utilisateur clique sur un onglet, vous pouvez le faire:

$(".tabContainer").tabs({ 
     select: function(event, ui) { 
      window.location.hash = ui.tab.hash; 
     } 
    }); 

puis, au lieu de sapin ing clic, vous pouvez utiliser les onglets méthode de sélection si vous avez une méthode getIndexForHash qui peut renvoyer le bon nombre d'onglets pour la valeur de hachage sélectionnée:

var j_last_known_hash = location.hash; 
    window.setInterval(function() { 
     var newHash = location.hash; 
     if(j_last_known_hash != newHash) { 
      var index = getIndexForHash(newHash); 
      $('.tabContainer').tabs("select",index); 
      j_last_known_hash = newHash; 
     } 
    }, 100); 
+0

J'ai beaucoup emprunté à la réponse d'Atli, mais j'ai juste remplacé la partie où le clic était invoqué avec l'invocation de la méthode select. – DaveH

+0

et je dois mentionner, 500ms est un long moment pour l'utilisateur d'interagir avec d'autres choses, et pour les choses de se sentir non-réactif. réduire à 100ms. – DaveH