Проверьте, включен ли Javascript

Есть ли способ проверить, включен или поддерживается Javascript браузером? Если он не поддерживается, я хотел бы перенаправить пользователя на удобную страницу ошибок.

Я использую jQuery и PHP Zend Framework.

Ответ 1

<noscript><meta http-equiv="refresh" content="1;url=error.html"></noscript>

Это приведет к перенаправлению на страницу с ошибкой, если script отключен. Просто замените error.html на URL-адрес страницы с ошибкой.

Ответ 2

В качестве еще одного варианта вы можете (хотя для этого требуется вторая страница) использовать javascript для установки файла cookie.

Если файл cookie существует на стороне сервера (у них есть javascript), он отображает страницу как обычно. Во время отсутствия cookie вы можете либо использовать перенаправление Location, либо отобразить соответствующий шаблон [урезанный], чтобы учесть их отсутствие поддержки javascript.

page html

<script type="text/javascript">
  document.cookie = 'hasJS=true';
</script>

page php

if (isset($_COOKIE['hasJS'])){
  // normal page render
}else{
  header('Location: http://mysite.com/index-nojs.php');
}

Ответ 3

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

<noscript><img src="/javascript_disabled.php"></noscript>

и

// contents of javascript_disabled.php
$_SESSION['javascript_disabled'] = 1;

Ответ 4

По умолчанию отправьте версию без javascript. Там вы добавили небольшой кусок javascript, который перенаправляется на динамическую версию. Это будет выполняться только при включенном js.

Ответ 5

Вы можете сделать простую "целевую страницу" для пользователей без javascript и добавить перенаправление javascript к версии сайта с поддержкой javascript.

Что-то вроде этого:

...
<html>
...
<script type="text/javascript">
 window.location.replace("/hasjs");
</script>

Ответ 6

Кусок торта!

Включите всю страницу Javascript в один DIV.

Наложите второй DIV равного размера, который содержит вашу страницу, отличную от Javascript. Дайте DIV id и высокий индекс z:

div id="hidejs" style="z-index: 200"

В этом втором не-JS DIV, ваш самый первый код будет Javascript, который заставляет эту видимость DIV скрываться:

document.getElementById.("hidejs").style.visibility = "hidden";

Запрещен Javascript? Ничего не произойдет, и они увидят вышележащую страницу, отличную от Javascript.

Включен Javascript? Верхняя страница, не относящаяся к Javascript, станет невидимой, и они будут видеть основную страницу Javascript.

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

Ответ 7

Используйте теги <noscript> для включения мета-перенаправления, если на странице нет JavaScript.

Теги

<noscript> вызывают, когда браузер, подключающийся к странице, не имеет JavaScript.

Ответ 8

Приведите пользователя на страницу с ошибкой по умолчанию и выполните переадресацию javascript в разделе страницы. Переадресация перенаправляет пользователя на реальную страницу.

Если у них нет javascript, они не будут перенаправлены, а остальная страница (страница с ошибкой) загрузится.

Ответ 9

Да. Сделайте у вас последний jQuery.

JavaScript:

$(function(){ $('#jsEnabled2').html('Yes it is') }) 

PHP:

$js - 'No'; 
$jscheck = 'Javascript Enabled: '; 
$jscheck .= '<span id="jsEnabled">'.$js.'</span>';
print $jscheck;