2009-04-13 3 views
9

레일 내장 헬퍼 함수를 ​​사용하여 사이트에 아약스 기능을 추가하는 웹 앱을 만들고 있습니다. 사용자가 JS없이 제대로 작동하지 않기 때문에 앱을 사용할 수 없도록하고 싶습니다.Ruby on Rails, 자바 스크립트 감지

나는 이것을 막을 수 있어야합니다. JS없이 내 페이지를로드하지 못하게하려면 어떻게해야합니까?

내 레이아웃에서 태그를 사용하려고했습니다. 이것은 JS가 없음을 감지하지만 여전히 뷰를 렌더링합니다. yield를 중심으로 script 태그를두면 뷰가 렌더링되지 않습니다.

방법에 대한 아이디어가 있으십니까?

답변

21

head 요소에 메타 새로 고침 태그가있는 noscript 블록을 사용할 수 있습니다. 예 : 자바 스크립트가 사용자에 대한 꺼져있는 경우 명확히하기 위해, noscript 태그 만 실행 :

<head> 
    <!-- title, scripts, css etc go here --> 
    <noscript> 
     <meta http-equiv="refresh" content="2;url=http://yoursite.com/nojswarning.html"> 
    </noscript> 
</head> 

당신이 메타 새로 고침에 대한 자세한 내용을보실 수 있습니다 here

희망이

편집 할 수 있습니다. 따라서이 경우 JS가 꺼지면 사용자는 http://yoursite.com/nojswarning.html으로 리디렉션됩니다. 물론 이것을 원하는 모든 사이트의 페이지로 변경할 수 있습니다.

+0

감사합니다. 위대한 소식, 완벽하게 작동했습니다. –

2

간단한 대답은 JS를 통해 전체 앱을로드하는 것입니다. 그런 식으로, 응용 프로그램은 JS를 사용할 수있는 사람에게는 표시되지 않습니다.

JS- 검사 페이지로로드되는 iframe으로 페이지를 시작하는 방법도 있습니다. 모든 페이지는 사용자를 JS를 통해 앱의 실제 URL로 리디렉션합니다. 따라서 사용자가 JS를 가지고 있지 않으면 리다이렉트되지 않습니다 (그리고 < noscript> 태그로 JS가 필요하다는 것을 알릴 수 있습니다). (iframe을 사용하여 JS 사용자가 아닌 사용자에게 응용 프로그램에 쉽게 접근 할 수있는 URL을 제공하지 않도록 말합니다.)

0

<noscript></noscript> 것 같습니다. 나는 오버레이를 기본으로하는 작은 로더를 만들 것이고 클라이언트가 자바 스크립트를 지원하지 않는다면 자바 스크립트는 결코 로더를 숨기지 않을 것이다. <noscript> 태그의 콘텐츠가 오버레이와 함께 표시됩니다.