2009-04-13 4 views
9

Я создаю веб-приложение, которое использует встроенные вспомогательные функции Rails для добавления функциональности ajax на сайт. Я не хочу, чтобы пользователь мог использовать приложение без JS, так как он не будет функционировать должным образом.Ruby on Rails, обнаружение Javascript

Мне нужно уметь предотвратить это. Как я могу заставить пользователя не загружать ни одну из моих страниц без JS?

Я попытался использовать тег в своем макете. Это обнаруживает отсутствие JS, но все же отображает представления. Помещение тега скрипта вокруг выходного файла не позволяет отображать какой-либо вид.

Любые идеи о том, как это сделать?

ответ

21

В элементе head может быть блок noscript с меткой обновления мета. Пример:

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

вы можете прочитать больше о метаобновлении here

Надеется, что это помогает

EDIT: Для уточнения, то noscript тега работает только если JavaScript отключен для пользователя. Поэтому в этом случае, если JS отключен, пользователь будет перенаправлен на http://yoursite.com/nojswarning.html. конечно, вы можете изменить это, чтобы быть любой страницей на любом сайте, который вы хотите.

+0

спасибо, отличная почта, отлично сработал. –

2

Простой ответ: иметь всю нагрузку на приложение через JS. Таким образом, приложение никогда не будет отображаться для тех, у кого есть JS.

Альтернативой будет запуск вашей страницы с помощью iframe, который загружается на страницу проверки JS. Вся эта страница перенаправляет пользователя на истинный URL приложения через JS. Таким образом, если у пользователя нет JS, они не будут перенаправлены (и вы можете сообщить им, что им нужна JS с тегами < noscript>). (Я говорю, чтобы использовать iframe, чтобы вы не предоставляли пользователям, не использующим JS, легкий URL-адрес для доступа к приложению.)

0

<noscript></noscript>, похоже, сработает. Я бы сделал по умолчанию небольшой загрузчик с наложением, и если клиент не поддерживает javascript, javascript никогда не скроет загрузчика. И содержимое в теге <noscript> будет отображаться с наложением.

Смежные вопросы