检查Javascript是否已启用

时间:2011-07-13 18:16:06

标签: php javascript jquery zend-framework

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

我正在使用jQuery和PHP Zend Framework。

8 个答案:

答案 0 :(得分:20)

<noscript><meta http-equiv="refresh" content="1;url=error.html"></noscript>

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

答案 1 :(得分:6)

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

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

页面html

<script type="text/javascript">
  document.cookie = 'hasJS=true';
</script>

页面php

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

答案 2 :(得分:4)

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

之类的事情
<noscript><img src="/javascript_disabled.php"></noscript>

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

答案 3 :(得分:3)

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

答案 4 :(得分:2)

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

这样的事情:

...
<html>
...
<script type="text/javascript">
 window.location.replace("/hasjs");
</script>

答案 5 :(得分:1)

一块蛋糕!

在一个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页面。

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

答案 6 :(得分:0)

如果网页没有JavaScript,请使用<noscript>代码包含元重定向。

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

<noscript>个标记。

答案 7 :(得分:-1)

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

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