2013-03-04 8 views
1

저는 ajax로 콘텐츠를 변경하면서 history.js를 사용하여 pushState을 사용하여 페이지의 URL을 변경하고 있습니다.History.JS 첫 번째 페이지에 대한 뒤로 버튼이 작동하지 않습니다.

제가 처음에 방문한 페이지가 버튼과 함께 작동하지 않습니다. 콘텐츠가 저장되지 않았거나 콘텐츠를 가져 오는 데 사용 된 정보가 저장되지 않았습니다.

내가 초기화 작업시 pushState이라고 부르면 어떻게 든 그 페이지의 두 항목이 생깁니다. 그래서 내가 돌아 왔을 때, 내가 돌아 왔던 메인 페이지로 가기 위해 다시 공격해야한다. 그것이 합리적인지 아닌지를 모릅니다. 내 특별한 사건과 관련있는 것을 여기에서 찾지 않는 것.

$(function() { 
    var History = window.History; 
    if (!History.enabled) { 
     return false; 
    } 
    if($.url().attr('fragment')){ 
     var url = $.url().attr('fragment').split("-"); 
    }else{ 
     var url = $.url().attr('path').split("-"); 
    } 

    photo_ajax(url[3],url[2],url[4]); //perform ajax content update 

    //initialize first page but doesn't quite work as it creates two entries 
    //History.pushState({pho_id:url[3],per_id:url[2],a_id:url[4]}, "Viewing Photo", $.url().attr('path')); 

    History.Adapter.bind(window,'statechange',function() { 
     var State = History.getState(); 
     photo_ajax(State.data.pho_id,State.data.per_id,State.data.a_id); 
    }); 
}); 


$(document).ready(function(){ 
    $(document).on('click', '[id^="dopho_"]', function(event){ 
     var id = $(this).attr("id").split('_'); 
     event.preventDefault(); 
     History.pushState({pho_id:id[1],per_id:id[2],a_id:id[3]}, "Viewing Photo", $(this).attr('href')); 
    }); 
}); 

답변

1

글쎄 나는 뭔가 효과가 있다고 생각했습니다. replaceState을 대신 사용하면 초기화 줄이 작동하고 이중 입력이 발생하지 않습니다. 그래서 나는 이것으로 지금 갈 것이다.

$(function() { 
     var History = window.History; 
     if (!History.enabled) { 
      return false; 
     } 
     if($.url().attr('fragment')){ 
      var url = $.url().attr('fragment').split("-"); 
     }else{ 
      var url = $.url().attr('path').split("-"); 
     } 

     photo_ajax(url[3],url[2],url[4]); //perform ajax content update 

     //initialize first page but doesn't quite work as it creates two entries 
     History.replaceState({pho_id:url[3],per_id:url[2],a_id:url[4]}, "Viewing Photo", $.url().attr('path')); 

     History.Adapter.bind(window,'statechange',function() { 
      var State = History.getState(); 
      photo_ajax(State.data.pho_id,State.data.per_id,State.data.a_id); 
     }); 
    }); 


    $(document).ready(function(){ 
     $(document).on('click', '[id^="dopho_"]', function(event){ 
      var id = $(this).attr("id").split('_'); 
      event.preventDefault(); 
      History.pushState({pho_id:id[1],per_id:id[2],a_id:id[3]}, "Viewing Photo", $(this).attr('href')); 
     }); 
    });