Может ли php определить, включен ли JavaScript или нет? - PullRequest
3 голосов
/ 31 января 2010

У меня есть страница, которая создается динамически.

Теперь я хочу добавить функцию ajax, поэтому я хочу добавить оператор if для изменения выходных данных.

if(js is on){
 ...
 ... 
 echo "js is on";
}else{
...
echo "js is off";
}

Есть ли способ определить, включен ли js с помощью php?

Или есть ли способ удалить / скрыть это с помощью jquery?

Заранее спасибо.

Ответы [ 4 ]

9 голосов
/ 31 января 2010

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

Вы должны предоставить немного больше информации о том, что вы делаете, чтобы мы нашли для вас обходной путь. В PHP можно определить, был ли выполнен вызов через AJAX или нет, используя глобальную переменную $_SERVER['X_HTTP_REQUESTED_WITH'], которую jQuery установит автоматически.

Если вам нужно показать элемент при включенном Javascript, вы можете сначала скрыть элемент с помощью CSS и включить его с помощью Javascript / jQuery. То же самое происходит и наоборот.

4 голосов
/ 31 января 2010

Вы не можете сделать это в PHP, потому что страница отображается к тому времени, когда вы знаете. И кроме какого-то безумного сценария перенаправления, вам лучше всего использовать CSS + JS, чтобы показать / скрыть то, что вам нужно:

То, что я обычно делаю (и ваш пробег может варьироваться в зависимости от того, что вам нужно показать / скрыть), это:

<html>
   <head>
      ... other stuff here, title, meta, etc ...

      <script type="text/javascript">document.documentElement.className += " js"</script>

      ... everything else
   </head>

Затем вы можете использовать CSS, чтобы скрыть / показать, основываясь на том, включен ли JavaScript / выключен:

/* Hide by default, show if JS is enabled */
#needsJS     { display: none  }
.js #needsJS { display: block }

/* Show by default, hide if JS is enabled */
.js #fallback { display: none }
2 голосов
/ 31 января 2010

Он не может сделать это напрямую, и обходные пути для него обычно неуклюжи и расточительны.

Вместо этого используйте прогрессивную технику улучшения.

0 голосов
/ 31 января 2010

Просто сделайте сайт работающим без JS. Если все в порядке, вы можете присоединить функциональность JS, например, с помощью JQuery.

Это также называется ненавязчивый JavaScript .

Таким образом, вы в основном не различаете клиента с JS и клиента без JS. Вы не предоставляете другой вывод. Вы настраиваете свой HTML-код таким образом, чтобы вы могли легко идентифицировать элементы, которые должны JS-функциональность, и эти функции программным способом.

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

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