繁体   English   中英

检查Javascript是否开启

[英]Check whether Javascript is enabled

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

我正在使用 jQuery 和 PHP Zend 框架。

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

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

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

如果 cookie 存在于服务器端(它们有 javascript),则正常呈现页面。 在没有 cookie 的情况下,您可以使用Location重定向,或呈现适当的 [stripped-down] 模板以适应它们缺乏 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');
}

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

<noscript><img src="/javascript_disabled.php"></noscript>

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

默认发送不带 javascript 的版本。 在那里,您包含一小块 javascript 重定向到动态版本。 这只会在启用 js 时执行。

您可以为没有 javascript 的用户制作一个简单的“登陆页面”,并将 javascript 重定向添加到支持 javascript 的站点版本。

像这样的东西:

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

小菜一碟!

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

覆盖第二个相同大小的 DIV,其中包含您的非 Javascript 页面。 给那个 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,请使用<noscript>标签包含元重定向。

<noscript>标签在连接到页面的浏览器没有 JavaScript 时调用。

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

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

是的。 让您拥有最新的jQuery。

Javascript:

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

PHP:

$js - 'No'; 
$jscheck = 'Javascript Enabled: '; 
$jscheck .= '<span id="jsEnabled">'.$js.'</span>';
print $jscheck;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM