2013-06-10 4 views
14

제목에서 알 수 있듯이. 내 Rails 응용 프로그램에서 Turbolinks를 사용하고 있는데 "브라우저 백"버튼에 약간의 문제가 있습니다. 내 자바 스크립트는 브라우저에서 다시 클릭 할 때까지 제대로 작동하고 작동을 멈 춥니 다. 내 앱에서 링크를 클릭하거나 페이지를 새로 고침하면 다시 작동하기 시작합니다.레일에서 터보 링크를 사용하는 경우 브라우저에서 "뒤로"를 클릭하면 자바 스크립트 코드가 비활성화됩니다.

개미 문제를 해결하는 방법? Turbolinks 클래식에 대한

답변

23

두 솔루션 :

설정 0으로 캐시 그래서 페이지를 HTML5 역사를 사용하여 캐시 있지 않은지 확인하십시오.

Turbolinks.pagesCached(0); 

다른 해결책은 "page : restore"이벤트를 듣고 초기화 메소드를 호출하는 것입니다. 이 후자의 솔루션이 더 효과적입니다. 이 솔루션은 현재 사용되지 않도록

document.addEventListener("page:restore", function() { 
    app.init(); 
}); 
+0

나는 이것에 대한 투표를받은합니다. 최신 버전으로 변경 되었습니까? –

+3

안녕하세요, 저는 downvote하지 않았지만, [여기] (https://github.com/turbolinks/turbolinks/issues/135)에서 볼 수 있듯이'page : restore'는 Turbolinks 5에서 더 이상 작동하지 않습니다. 또한 'Turbolinks .pagesCached();'죽은 것 같아요, Turbolinks Classic이 아닌 Turbolinks Classic에만 존재한다고 생각합니다. – stephenmurdoch

+0

도우미가 –

19

jquery-turbolinks 보석은 더 이상 Turbolinks 5를 지원하지 않습니다.

터보 링크 캐싱을 사용하지 않으려면이 메타를 페이지에 추가하기 만하면됩니다.

<meta name="turbolinks-cache-control" content="no-cache"> 
1

다음은 turbolinks issue discussion입니다. 나를 위해 옆 솔루션 일 - 다음을 사용하여 JS 초기화 요소 (내 경우 선택 드롭 다운에서) 삭제 :

document.addEventListener("turbolinks:before-cache", function() { 
    $('.chosen-select').chosen('destroy'); 
}) 
관련 문제