2013-05-17 18 views
6

Moja strona działa znacznie szybciej dzięki kodowi, który starannie zmodyfikowałem, ale bardzo bym chciał, gdyby przyciski wstecz/w przód przeglądarki działały. Teraz, z moim kodem poniżej, pasek adresu przeglądarki nigdy się nie zmienia. Kiedy ktoś kliknie "Wstecz", usuwa je z aplikacji.uzyskiwanie przycisków wstecz i do przodu do pracy z ajaxem

Czy w łatwy sposób można to zmienić, aby przycisk "wstecz/dalej" przeglądarki działał? Albo jeśli ktoś mógłby wskazać mi właściwy kierunek. Dzięki za pomoc.

$(document).on("ready", function() { 

    //I want to load content into the '.page-content' class, with ajax 

    var ajax_loaded = (function (response) { 

     $(".page-content") 

     .html($(response).filter(".page-content")); 

     $(".page-content .ajax").on("click", ajax_load); 


    }); 



    //the function below is called by links that are described 
    //with the class 'ajax', or are in the div 'menu' 

    var history = []; 

    var ajax_load = (function (e) { 

     e.preventDefault(); 


     history.push(this); 
     var url = $(this).attr("href"); 
     var method = $(this).attr("data-method"); 


     $.ajax({ 
      url: url, 
      type: method, 
      success: ajax_loaded 
     }); 

    }); 


    //monitor for clicks from menu div, or with 
    //the ajax class 
    //why the trigger? 

    $("#menu a").on("click", ajax_load); 
    $(".ajax").on("click", ajax_load); 
    $("#menu a.main").trigger("click"); 



}); 
+0

Tak. History.js - wypycha stany przeglądarki i pozwala na ruch do tyłu i do przodu. –

Odpowiedz

1

Oto sposób na wykrycie, o co prosisz.

Niedźwiedź w mojej grze z przyciskami do tyłu i do przodu jest ryzykownym zadaniem.

window.onload = function() { 

    if (typeof history.pushState === "function") { 

     history.pushState("someState", null, null); 

     window.onpopstate = function() { 

      history.pushState("newState", null, null); 

      // Handle the back (or forward) buttons here 
      // Will not handle refresh, use onbeforeunload for this. 
     }; 
    } 
} 
+0

Interesujące, ale nie pewne, jak je wdrożyć. Z pewnością komentarz "// Handle the back (or forward) here" to kod, którego szukam? Co masz na myśli mówiąc "Niedźwiedź w mojej grze z przyciskami do tyłu i do przodu to ryzykowne zadanie"? Dzięki. – CHarris

0

powinno się sprawdzić History.js Oto niektóre przykładowy kod: -

(function(window,undefined){ 

    // Prepare 
    var History = window.History; // Note: We are using a capital H instead of a lower h 
    if (!History.enabled) { 
     // History.js is disabled for this browser. 
     // This is because we can optionally choose to support HTML4 browsers or not. 
     return false; 
    } 

    // Bind to StateChange Event 
    History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate 
     var State = History.getState(); // Note: We are using History.getState() instead of event.state 
     //History.log(State.data, State.title, State.url); 
     var goto_url = State.url;    
     $.ajax({ 
      url: goto_url, 
      dataType: "script" 
     }); 
    }); 
    })(window); 
1

Można użyć wtyczki adres jQuery (http://www.asual.com/jquery/address/). Ma zdarzenie, które wykrywa, kiedy użytkownik naciśnie przycisk cofania/przewijania do przodu.

$.address.externalChange(function() { console.log('back/forward pressed'); }); 

O ile mi wiadomo, nie ma możliwości rozróżnienia między powrotem a powrotem.

+0

Pozdrawiam, sprawdzę to. Myślę, że plik history.js może być zbyt obszerny dla tego, czego potrzebuję - cały mój ajax działa, tylko te brzydkie przyciski wstecz/do przodu. – CHarris

Powiązane problemy