Ruby on Rails, обнаружение JavaScript - PullRequest
10 голосов
/ 14 апреля 2009

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

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

Я попытался использовать тег в своем макете. Это обнаруживает отсутствие JS, но по-прежнему отображает представления. Размещение тега script вокруг yield предотвращает отображение любого представления.

Есть идеи, как это сделать?

Ответы [ 3 ]

22 голосов
/ 14 апреля 2009

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

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

Вы можете узнать больше о мета-обновлении здесь

Надеюсь, это поможет

РЕДАКТИРОВАТЬ: Для пояснения, тег noscript запускается, только если JavaScript отключен для пользователя. Так что в этом случае, если JS выключен, пользователь будет перенаправлен на http://yoursite.com/nojswarning.html. конечно, вы можете изменить это на любую страницу на любом сайте.

2 голосов
/ 14 апреля 2009

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

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

0 голосов
/ 14 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...