Нечто подобное ниже не работает:
<?php $nojs = false; ?>
<noscript>
<?php $nojs = true; ?>
</noscript>
Поскольку PHP выполняется независимо от того, включен JS или нет. Но есть ли способ получить подобный эффект? Я пытаюсь установить флаг, если JS отключен, и затем отображать части страницы соответственно.
PHP выполняется до JavaScript, поэтому вы не можете сделать это. Вы можете сделать что-то, например, выполнить базовый запрос ajax и сохранить hasjs
в переменной сеанса после успешного запроса страницы ajax. Вы не будете знать, если это просто тот факт, что запрос ajax не был успешным из-за чего-то другого, или если у них отключен Javascript.
Давайте все равно попробуем:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$( document ).ready(function() {
$.get( "hasjs.php", { hasjs: "1"} );
});
</script>
<?php
if(isset($_GET['hasjs']))
{
session_start();
$_SESSION['hasjs'] = 1;
}
?>
Затем вы можете получить доступ к переменной сеанса, чтобы определить, есть ли у них JS на основе запроса ajax. Ничто не мешает пользователю посетить эту страницу, если у него не установлен JS.
Других решений пока нет …