2013-08-23 3 views
0

이것이 작동하지 않는 이유를 모르겠지만 모든 것을 시도해 왔습니다.Ajax 로딩 페이지없이 history.js 작업하기

온라인 자습서 대부분은 내가 아는 Ajax를 사용하고 있으며 적응하려고 시도했지만 아무 것도 작동하지 않습니다. 나는 bang url을 사용하고 있으며 모든 컨텐트는 색인 페이지에로드되어 단지 표시되고 숨겨져 있습니다. 나는 역사를 일하는 데 도움이 될 수있다.

다음

내 스크립트입니다 ...

History.Adapter.bind(window, 'statechange', handleStateChange); 
$('nav a').on('click',function(e) { 
    var target = $(this).attr('href'); 

    History.pushState(null, null, target); 
}); 

function handleStateChange() { 
    alert("State changed..."); 
} 

난 그냥 거기에서 갈 수 있지만 경고가 결코 화재 내가 왜 모르는 일어날 수있는 경고를 얻을 수 있다면.

답변

0

그냥 이런 식으로, 이벤트를 바인딩하기 전에 함수를 정의 : 당신이 필요하지 않은 경우

function handleStateChange() { 
    alert("State changed..."); 
} 
History.Adapter.bind(window, 'statechange', handleStateChange); 
$('nav a').on('click',function(e) { 
    var target = $(this).attr('href'); 

    History.pushState(null, null, target); 
}); 

또는 내가하는 것이 좋아 더 나은은 물론, 바인드 내부의 함수를 정의 스크립트에서 나중에 같은 기능을 사용하십시오.

History.Adapter.bind(window, 'statechange', function() { 
    alert("State changed..."); 
}); 

$('nav a').on('click',function(e) { 
    var target = $(this).attr('href'); 

    History.pushState(null, null, target); 
}); 
+0

안녕하세요 MacK, 비슷한 질문이 있습니다. 한 페이지에서 다음과 같이 사용하면 : a.html? state = 1 and a.html? state = 2, 스크립트는 정상적으로 작동합니다. 그러나 저는 History.js를 a.html과 b.html과 같은 두 페이지에서 사용합니다. 그래서, 그것은 달릴 수 없습니다. 이 질문에 나를 도우십시오 : http://stackoverflow.com/questions/19586033/how-to-use-history-js-to-capture-back-event –

1

내가 "$은 ('탐색 A가')"당신이 게시 한 코드에 오타라고 생각, 그것은해야한다 :이 FIDDLE에서

.... 
$('#nav a').on('click',function(e) { 
var target = $(this).attr('href'); 
.... 

난 당신이를 사용한다고 가정 div와 "nav"를 id 속성으로 사용하고 내부의 일부 링크를 도와 드리겠습니다.

+0

_ [nav] (http : //www.w3 .org/wiki/HTML/Elements/nav) _ 요소는 새로운 HTML5 태그입니다.이 경우에는 오타가 아닙니다. :) – MacK

+0

새 태그에 대해 알지 못했지만 ... 'div' 또는 'p'또는 다른 태그처럼 내가 가정합니다 : $ ('nav'). find ('a') 코드를 작성하는 올바른 방법입니다 ... – lollo