有没有办法检查浏览器是启用还是支持Javascript?如果不支持,我想将用户重定向到用户友好的错误页面。
我正在使用jQuery和PHP Zend Framework。
答案 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>
代码包含元重定向。
<noscript>
个标记。
答案 7 :(得分:-1)
默认情况下将用户带到错误页面,并在页面部分执行javascript重定向。让重定向将用户推送到真实页面。
如果他们没有启用javascript,则不会重定向,并且会加载页面的其余部分(错误页面)。