2016-08-16 5 views
-1

나는 많은 수의 행을 가진 웹 사이트를 만들고 있고 행을 누르면 나머지 부분은 숨겨집니다. 모두 다시 표시하려면 다시 눌러야하지만 고객은 브라우저/모바일의 뒤로 버튼을 누르기를 원할 수 있습니다.뒤로 버튼 트리거 이벤트에서

내가있는 방법을 찾고 있어요 JS 또는 JQuery와 그 :

행이 숨겨져 정상 뒤로 버튼 funcionality을하지 않을 경우 (다시 모든 행을 표시) 뭔가를 할 버튼을 다시 눌러 경우.

아이디어가 있으십니까?

미리 감사드립니다.

+0

나쁜 연습과 완전히 불가능 , 이것은 대부분의 프론트 엔드 프레임 워크 (AngularJS, ReactJS 등) 라우터가 작동하는 방식입니다. – Mistic

답변

0

기록 API를 사용해야합니다.

history.pushState()을 사용하면 행을 클릭 할 때 새 상태를 만들 수 있습니다.

window.onpopstate에 대한 콜백을 등록하면 사용자가 뒤로 버튼을 클릭 할 때 동작을 수정할 수 있습니다 (event을 취소하고 내용을 수행 할 수 있음).

예 (선택 안된, JQuery와)

$('.row').on('click', function() { 
 
    // do your stuff 
 
    
 
    window.pushState({rowId: rowId}); // you might need the additional parameters, particularly to change the URL 
 
}); 
 

 
$(window).on('popstate', function(event) { 
 
    if ('rowId' in event.state) { 
 
    // do your stuff 
 
    
 
    event.preventDefault(); 
 
    } 
 
});

더 많은 정보를 원하시면 : 그것은 @Tyler
https://developer.mozilla.org/en-US/docs/Web/API/History_API
https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate

+0

정말 유용합니다. pushState 함수를 사용하지 않지만 코드의 두 번째 부분을 사용합니다. 클래스 이름에 단 하나의 행만 표시하면 제어하고 있습니다. 내가 .row.open을 찾으면 나머지 행을 표시해야하므로 한 행만 표시한다는 것을 의미합니다. 그렇지 않으면 이벤트를 취소하지 마십시오. –

1
try this 


function detectBrowser() 
    { 
    window.onpopstate = function(event) 
    { 
    alert('helloindia'); 
    }; 
    } 
    detectBrowser();