PHP и <noscript> для обнаружения включенного JavaScript в браузере

Это верно? Если не правильный синтаксис

Я новичок в php, поэтому стараюсь учиться.

<?php // Check browser for JavaScript support $jsSupport='true'; ?> <noscript><?php $jsSupport='false'; ?></noscript> <?php if ($jsSupport == 'false') { include ('no-script-layout.php'); } else { include ('regular-layout.php'); } ?> 

Или есть лучший способ справиться с этим?

Solutions Collecting From Web of "PHP и <noscript> для обнаружения включенного JavaScript в браузере"

теги <noscript>

Вы можете использовать теги noscript для отображения содержимого в браузерах с отключенным javascript или перенаправлением их на другую страницу (например, nojs-version.php ).

 <!-- Redirect to another page (for no-js support) (place it in your <head>) --> <noscript><meta http-equiv="refresh" content="0;url=nojs-version.php"></noscript> <!-- Show a message --> <noscript>You don't have javascript enabled! Please download Google Chrome!</noscript> 

Modernizr

Лучший способ справиться с обнаружением javascript (& feature) – использовать Modernizr: http://modernizr.com

Проверьте этот вопрос: Какова цель класса HTML «no-js»?

Основной пример (без Modernizr)

Вы можете добавить класс no-js на загрузку страницы к тегу <body> . Затем, когда страница загружается и если включен javascript, вы можете заменить no-js на js следующим образом:

 // When the DOM is ready & loaded, do this.. $(document).ready(function(){ // Remove the `no-js` and add the `js` (because JS is enabled (we're using it!) $('body').removeClass('no-js').addClass('js'); // Assign it to a var so you don't traverse the DOM unnecessarily. var useJS = $('body').hasClass('js'); if(useJS){ // JS Enabled } }); 

Вышеприведенный код является очень простым примером того, как работает модернизация. Я бы очень рекомендовал использовать это.

Проверьте Модернизр

Для этого (если вам действительно нужно знать PHP, если у пользователя есть JS):

 <script> // AJAX call to your PHP script to tell it that JS is enabled </script> 

Нет, это неправильно. Весь код интерпретируется и почему вы используете строковые литералы вместо фактических логических значений? И не говоря уже о том, что вместо оператора сравнения в вашем операторе if вы используете оператор присваивания.

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

это работает очень хорошо, если JavaScript отключен

HTML

 <noscript> <div id="noscript-warning">This Application works best with JavaScript enabled</div> </noscript> 

CSS

 <style> #noscript-warning { font-family: sans-serif; position: fixed; top: 0; left: 0; width: 100%; z-index: 101; text-align: center; font-weight: bold; font-size: 120%; color: #fff; background-color: #ae0000; padding: 5px 0 5px 0; </style> 

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

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

Я думаю, что вы можете сделать это в своем скрипте, в скрипте index.php, запишите этот код:

 <?php //true will be returned only if javascript is not enabled $JSEnabled = "<noscript>true</noscript>"; //then you can do echo $JSEnabled to see the result yourself //in a condition statement ... if($JSEnabled) { // ... code for JS Enabled } else { // ... code not JS Disabled } 

ОБНОВИТЬ :

  $js = null; $js = (boolean) '<noscript>false</noscript>'; //the noscript text : false is shown when no js support detected in your browser. this value will be converted to a boolean value for testing purpose. if($js) { //if $js gets the no script text , that means that the browser is not supporting the js, so this line will check if $js is set to false , the else statement is fired , otherwise the if statement is fired echo 'Your javascript is enabled<br>'; } else { echo 'Your javascript is disabled<br>'; } 

Я получил его для работы для меня, обернув тег комментария HTML внутри тегов noscript:

 <noscript><!-- </noscript> <?php $a = 42; echo $a; ?> <noscript> --> </noscript> 

У меня были сомнения в этом … но это работает, так что … Дайте мне знать, если есть какой-то странный случай, где это не так … Надеюсь, это поможет с вашими проблемами 🙂

Yo может сделать это с помощью jQuery и CSS:

 <body style='display: none;'> <!--- Content goes here ---> </body> <script> //jQuery $("body").css("display","block"); //Pure JavaScript document.body.style.display="block"; </script> 

как насчет ?

 <noscript> <?php //do the include thing right here $a=1; ?> </noscript> <?php if(isset($a)){ //do nothing }else { //add the include u want }; <?