检查Javascript是否已启用

有没有办法检查浏览器是启用还是支持Javascript? 如果不支持,我想将用户重定向到用户友好的错误页面。

我正在使用jQuery和PHP Zend Framework。

 

如果禁用脚本,这将重定向到错误页面。 只需将error.html替换为错误页面的URL即可。

作为另一种选择,您可以(虽然它需要第二页访问)使用javascript来设置cookie。

如果cookie存在于服务器端(他们有javascript)正常呈现页面。 在没有cookie的情况下,您可以使用Location重定向,也可以渲染相应的[精简]模板以适应他们缺乏javascript支持。

页面HTML

  

页面PHP

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

是否启用javascript只能在浏览器的上下文中获知,因此您可以做的最好的事情是编写一些浏览器端代码,根据是否启用了javascript来设置标记。 一种可能性是做类似的事情

  

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

默认情况下,发送没有javascript的版本。 在那里你包含了一小段重定向到动态版本的javascript。 只有在启用js时才会执行此操作。

您可以为没有javascript的用户创建一个简单的“登录页面”,并将javascript重定向添加到启用javascript的站点版本中。

像这样的东西:

 ...  ...  

小菜一碟!

在一个DIV中包含整个Javascript页面。

覆盖包含非Javascript页面的相同大小的第二个DIV。 给那个DIV一个id和一个高z-index:

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

在第二个非JS DIV中,让你的第一个代码是Javascript,将这个DIV的可见性设置为隐藏:

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

没有启用Javascript? 什么都不会发生,他们会看到覆盖的非Javascript页面。

是否启用了Javascript? 覆盖的非Javascript页面将变为不可见,他们将看到底层的Javascript页面。

这也允许您将整个页面保存在一个文件中,使修改更容易,而不是尝试管理同一页面的两个文件。

如果页面没有JavaScript,请使用标记包含元重定向。

当连接到页面的浏览器没有JavaScript时,会调用标记。

默认情况下将用户带到错误页面,并在页面部分执行javascript重定向。 让重定向将用户推送到真实页面。

如果他们没有启用javascript,他们将不会被重定向,并且将加载页面的其余部分(错误页面)。

是。 让你拥有最新的jQuery。

使用Javascript:

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

PHP:

 $js - 'No'; $jscheck = 'Javascript Enabled: '; $jscheck .= ''.$js.''; print $jscheck;