php可以检测javascript是否开启?

时间:2010-01-31 16:36:42

标签: php javascript

我有动态创建的页面。

现在我想添加ajax函数,所以我想添加if语句来改变输出。

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

有什么方法可以检测js是否启用了php?

或者有什么方法可以通过jquery删除/隐藏它吗?

提前致谢。

4 个答案:

答案 0 :(得分:9)

PHP在任何浏览器操作发生之前执行,所以不,PHP无法直接检测用户是否启用了Javascript。

您必须提供更多信息,告诉您我们为您找到的解决方法。在PHP中,可以使用jQuery将自动设置的$_SERVER['X_HTTP_REQUESTED_WITH']全局变量来检测调用是通过AJAX进行的。

如果您需要在启用Javascript时显示元素,您可以先使用CSS隐藏元素并使用Javascript / jQuery启用它。反过来也是如此。

答案 1 :(得分:4)

你不能在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 :(得分:2)

它不能直接做到,并且它的变通方法通常很笨拙和浪费。

改为使用渐进增强技术。

答案 3 :(得分:0)

让网站在没有JS的情况下工作。如果一切正常,您可以附加JS功能,例如jQuery的。

这也称为unobtrusive JavaScript

所以你基本上不区分带有JS的客户端和没有JS的客户端。您不提供不同的输出。您可以通过这样的方式设置HTML代码,以便以编程方式轻松识别JS应该具有此功能的元素。

这种方式对您来说更加容易,因为您不必考虑不同的输出,并且它保证了站点在没有JS的情况下也能正常工作。