2012-11-05 2 views
3

Je travaille sur une application d'une seule page où chaque section est chargée via ajax. La page d'accueil est sa propre page, puis vous cliquez sur "À propos de" et il vous amène à l'application d'une seule page. Je suis devenu l'URL pour changer de chaque section et les boutons avant et arrière sur le navigateur pour fonctionner avec cet extrait:history.pushState casser sur le bouton de retour du navigateur

$('.down-button').on('click', function() { 
     var stateObj = { principles: "about-principles" }; 
     history.pushState(stateObj, null, "about-principles"); 
     $('#principles-wrap').scrollintoview({ duration: 1000 }); 
    }); 

Cependant, lorsque vous cliquez sur le chemin du retour à la page d'accueil, la page d'accueil ne actualisez, vous restez sur la page "A propos". Ou, si vous cliquez sur un lien vers la page d'accueil, vous obtenez une erreur 404.

Qu'est-ce qui me manque?

EDIT

Voici le reste du code:

function button_scroll() { 
// Call scrollIntoView js file into this 
$.getScript("/js/jquery.scrollintoview.min.js", function() { 
    $('.down-button').on('click', function() { 
     var stateObj = { principles: "about-principles" }; 
     history.pushState(stateObj, null, "about-principles"); 
     $('#principles-wrap').scrollintoview({ duration: 1000 }); 
    }); 
    $('.up-button-principles').on('click', function() { 
     var stateObj = { mission: "about-mission" }; 
     history.pushState(stateObj, null, "about-mission"); 
     $('#mission-wrap').scrollintoview({ duration: 1000 }); 
    }); 
    $('.down-button-principles').on('click', function() { 
     var stateObj = { snapshot: "about-snapshot" }; 
     history.pushState(stateObj, null, "about-snapshot"); 
     $('#snapshot-wrap').scrollintoview({ duration: 1000 }); 
    }); 
    $('.up-button-snapshot').on('click', function() { 
     var stateObj = { principles: "about-principles" }; 
     history.pushState(stateObj, null, "about-principles"); 
     $('#principles-wrap').scrollintoview({ duration: 1000 }); 
    }); 
    $('.down-button-snapshot').on('click', function() { 
     var stateObj = { people: "about-people" }; 
     history.pushState(stateObj, null, "about-people"); 
     $('#people-wrap').scrollintoview({ duration: 1000 }); 
    }); 
    $('.up-button-people').on('click', function() { 
     var stateObj = { snapshot: "about-snapshot" }; 
     history.pushState(stateObj, null, "about-snapshot"); 
     $('#snapshot-wrap').scrollintoview({ duration: 1000 }); 
    }); 

}); 

}

//Dropdown 
$(document).ready(function() { 
$(window).on('load resize', function() { 
    resize_mission(); 
    resize_principles(); 
    resize_snapshot(); 
    resize_people(); 
    button_scroll(); 
}); 
var dropDown = $('.dropdown'); 
$('h3.about').on('click', function() { 
    dropDown.slideDown('fast', function() { 
     var url = 'about2.php' 
     var stateObj = { mission: "about-mission" }; 
     history.pushState(stateObj, null, "about-mission"); 
     $.get(url, function(data) { 
      resize_mission(); 
      resize_principles(); 
      resize_snapshot(); 
      resize_people(); 
      button_scroll(); 
     }); 
    }); 
}); 

});

C'est tout ce que je fais. Pas de plugins.

Répondre

2

Etes-vous en train d'arrêter l'action par défaut de l'événement click sur la page d'accueil de la page about? Comme en utilisez-vous preventDefault() ou stopPropagation() sur un lien cliquez sur votre à propos de la page? Également vous arrêtez le comportement par défaut sur l'événement hashchange? Nous pourrions avoir besoin de voir plus de code autour de votre implémentation de l'histoire. Utilisez-vous des plugins pour l'histoire?

+0

J'ai ajouté le reste de mon code. Et non, je ne fais pas un preventDefault() ou en utilisant un plugin. Vous pouvez voir la page ici: http://teneo.telegraphbranding.com/ – reknirt

+0

Vous pouvez jeter un coup d'oeil au plugin JQuery BBQ de Ben Alman (http://benalman.com/projects/jquery-bbq-plugin/). C'est vraiment facile à utiliser et fonctionne à travers le navigateur (ainsi que les anciens navigateurs que votre code actuel ne va pas). Je l'utilise tout le temps sur mes projets (comme beaucoup de développeurs JQuery) et cela rend la vie beaucoup plus facile :). Je reviendrai cependant sur votre code mis à jour dès que j'en aurai l'occasion. – Zappa

+0

Comment pourrais-je implémenter le plugin BBQ sur mon site? Je suis un peu confus par la documentation. Encore une fois, merci beaucoup pour ton aide! – reknirt

Questions connexes