2010-09-01 2 views
1

В моем сайте rails мне нужен javascript на всех страницах. Если он не включен, каждая страница будет терпеть неудачу.Проверьте, доступен ли Javascript и перенаправлен на другую страницу.

Что я хочу сделать, если javascript не включен, я хочу перенаправить их на другую статическую страницу - попросить пользователей сначала включить javascript. Я хочу, чтобы это произошло на всех страницах. Является ли это возможным ?

Я попытался поместить код в контроллер приложения и проверил, но некоторые из них не встают на места. Есть ли стандартное решение для этого в рельсах .. может быть, помощником или чем-то ...?

ответ

-1

Изменить URL:'NOSCRIPT.HTML 'на свой вкус.

<noscript> 
    <meta http-equiv="refresh" content="0;URL=NOSCRIPT.HTML" /> 
</noscript> 

Примечание: это недопустимый HTML, хотя для этого конкретного запроса функции это единственный тент. Я мог бы рассказать людям о том, как это сделать должным образом, но иногда это не вариант, когда клиент дышит по вашей шее, и требуется прагматичное недорогое решение;)

Это говорит о том, что прогрессивное улучшение - это правильное сделать и показать сообщение, чтобы включить javascript, безусловно, является более чистым способом информирования ваших посетителей о включении JavaScript.

+1

, где я должен помещать этот код в тело или в голову? – Anand

+1

Я бы поставил его в голову ради аккуратности. Но работает в любом месте документа;) – BGerrissen

+1

При реализации этого решения помните, что поисковые системы могут интерпретировать эти метатеги, и это может иметь серьезные последствия для того, как ваши страницы попадают в Google и другие поисковые системы. Эта страница: http://www.franticfish.co.uk/blog/seo/103-google-experiments-2010 (поиск «Как Google относится к переадресации мета-обновления?»), Похоже, предполагает, что Google будет интерпретировать как перенаправление.В этом случае содержимое страницы NOSCRIPT.HTML окажется в индексе. –

7

Просто используйте элемент <noscript>, чтобы показать ссылку: <noscript>Your browser does not support scripting. Please use the <a href="#">lite version</a></noscript>. Вероятно, у вас будет очень мало пользователей без сценариев, поэтому не стоит тратить много времени на эти функции.

+0

Я хочу, чтобы перенаправить их на страницу, где я могу показать им ясно, как включить JavaScript для сайта на work – Anand

+2

Большинство пользователей с отключенным javascript имеют заблокированные браузеры и не имеют разрешений, необходимых для его повторного включения. –

+2

Действительно, я не думаю, что кто-то просто отключает скрипты по собственному выбору. Либо они - опытные пользователи, но и используют NoScript и, следовательно, не нуждаются в ваших инструкциях, или они отключены для них их администраторами. – slikts

1

Один из методов, который я использовал успешно, заключается в том, что первая страница, к которой обращается —, обычно имеет форму входа в систему —. Напишите cookie сеанса, используя JavaScript при загрузке страницы. Затем попросите контроллер, чтобы форма присутствовала, чтобы проверить наличие этого файла cookie. Если он не существует, вы знаете, что JavaScript недоступен, и вы можете предпринять соответствующие действия.

+1

, но если вы отключите JS, cookie останется установленным :) Я бы рекомендовал сделать cookie «expire» через некоторое время и заново создать его с новым значением. Но я бы пошел с тегом noScript здесь, его более стандартизованным и в основном является целью его существования – Quamis

3

Как пользователь NoScript, я нахожу эти перенаправления крайне раздражающими. Если я решила, что да, я хочу, чтобы этот сайт использовал JavaScript, я просто хочу нажать кнопку «разрешить JavaScript» в своем браузере, который перезагрузит текущую страницу. С перенаправлением мне нужен еще один шаг.

Что делать вместо этого, чтобы поместить некоторый код, как это в верхней части страницы:

<div class='warning' id='js-warning'> 
    Sorry, this page really requires JavaScript to be useful. 
    … maybe a little more text on why … 
</div> 
<script language='JavaScript'>$('js-warning').hide()</script> 
+1

Ли 'hide()' фактически удаляет его из DOM или применяет 'display: none'? Потому что некоторые люди могут просматривать JS ** на **, но CSS ** выключен **. Я соглашусь, что это очень, очень маленький угловой случай :) – detly

+1

Будьте моим гостем, чтобы вместо этого удалить код JavaScript. Я действительно беспокоюсь о доступности CSS (голос-читатель и т. Д.), Но CSS отключен? Не для меня, спасибо. –

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