如何检测是否禁用了JavaScript?


659

今天早上有一篇帖子问有多少人禁用JavaScript。然后我开始想知道可以使用什么技术来确定用户是否禁用了它。

有谁知道一些简单/简单的方法来检测JavaScript是否被禁用?我的目的是警告您,如果没有启用JS的浏览器,站点将无法正常运行。

最终,我想将它们重定向到可以在没有JS的情况下运行的内容,但是我需要将此检测作为占位符才能启动。


您要如何处理这些信息?它可能会改变您得到的答案-例如,与尝试检测禁用JavaScript并据此采取特定措施相比,通常应优先选择渐进增强功能。
强尼·布坎南

渐进增强是我想要的。我希望能够将它们重定向到可以在没有JS支持或功能强大的浏览器的情况下正常运行的替代内容。
MikeJ

1
@expiredninja 尼古拉斯·扎卡斯(Nicholas Zakas)的这篇文章说,虽然已经有1年多的历史了,但大约占2%。
sdleihssirhc 2011年

最简单的方法是使用noscript来显示非javascript网站,并使用javascript通过修改样式显示来显示任何javascript依赖元素。
Myforwik '02

Answers:


286

我假设您正在尝试确定是否提供JavaScript增强的内容。最好的实现会明显降级,因此该站点仍然可以在没有JavaScript的情况下运行。我还假设您的意思是服务器端检测,而不是<noscript>出于无法解释的原因使用该元素。

没有一种执行服务器端JavaScript检测的好方法。作为替代方案,可以使用JavaScript设置cookie,然后在后续页面浏览时使用服务器端脚本测试该cookie。但是,这将不适合确定要传递的内容,因为它将无法区分没有cookie的访问者与新访问者或阻止cookie的访问者。


129
<noscript>是指定非JavaScript内容的最语义上准确的方法-然后检测是否禁用了javascript,然后检测是否启用了。因此,默认情况下会显示“您需要javascript才能正确使用我的网站”消息,但请立即在onLoad中使用javascript函数将其隐藏。
matt lohkamp,

58
@matt lohkamp:甚至默认情况下也隐藏消息,并在其中放置一个<style><noscript>以取消隐藏(如果启用了JS,则不会在此重排)。令人惊讶的是,这适用于所有现代浏览器,甚至在IE6中
Piskvor离开了大楼

7
@matt-我已经这样做了一段时间,但是由于连接速度慢,消息会保留一段时间,从而使用户感到困惑。我在这里寻找其他解决方案。@Piskvor-标头中的<noscript>标记将不生效,主体中的<style>标记将不生效。

20
...除了您为什么要关注验证?您是否只是为了验证而进行验证?它可能不是“正确的”,但是如果它能“在引擎盖下沾上一点污垢”并能完成它,那么问题是什么呢?不用担心,我不会判断;-)
凯夫

4
如果您仅对<noscript>标记内的给定元素使用style属性(例如<noscript> <div style =“ color:red;”> blahblah </ div> </ noscript>或类似标签),它仍然有效。 。但是,如果将<style> BLOCK正常放置在定义某些.noscript(或类似)分类元素样式的标头中,并且在正文中的<noscript>标记内,则只给定给定元素以前定义的.noscript类,例如:<noscript> <div class =“ noscript”> blahblah </ div> </ noscript>
Sk8erPeter 2011年

360

我想在这里添加我的.02。它不是100%防弹的,但我认为它足够好。

对我来说,问题是出现“没有Java脚本,该站点无法正常运行”消息的首选示例,那么您需要确保您的站点在没有Java脚本的情况下可以正常工作。一旦走上了这条路,您就开始意识到该站点应该在关闭JS的情况下是防弹的,这是一大堆额外的工作。

因此,您真正想要的是“重定向”到一个页面,该页面显示“傻傻地打开JS”。但是,当然,您不能可靠地进行元重定向。所以,这是建议:

<noscript>
    <style type="text/css">
        .pagecontainer {display:none;}
    </style>
    <div class="noscriptmsg">
    You don't have javascript enabled.  Good luck with that.
    </div>
</noscript>

... 您网站中的所有内容都被一个“ pagecontainer”类的div包裹。然后,noscript标记内的CSS将隐藏您的所有页面内容,而是显示要显示的任何“ no JS”消息。这实际上就是Gmail的功能……如果对Google足够好,对我的小网站也足够好。


12
@steve曾经尝试验证google.com吗?验证只是确定文档与规格表的接近程度,而丝毫不影响页面的可用性。
JKirchartz

71
@JonasGeiregat如果构建了Web应用程序并且要求Javascript起作用,则强制用户要求Javascript有什么问题?我经常听到此评论,但仅对最简单的网站有效。尝试不带JS的Facebook,看看会发生什么。如果您的应用是针对Javascript构建的,那么无论如何要求99%的用户启用该怎么办?
李·本森

19
@Lee非常满意,在为支持对象划上界限之前,您只能为用户做很多事情。我们希望所有用户都具有可启用Internet的设备,对于拒绝访问Internet的用户,我还应该为自己的网站实现纸质版本吗?
Kolors 2014年

14
@Kolors,我在2012年3月发表了这样的评论,但我认为这在今天是双重事实。从那时起,我们有了Meteor,Angular.Js,Famo.us以及大量令人惊叹的库,这些库甚至都需要Javascript才能启动。我确实想知道选择禁用JS的用户实际上是在尝试实现...显然,他们没有和我们其他人一起浏览相同的网站,并且没有理由公司应该缩小网站规模以缩小规模。顽固用户的子集...
Lee Benson

6
是的,我想知道为什么我不能支持您的回答,因为我忘记激活我的JS :-))我喜欢并实现您的解决方案!谢谢!
加拉瓦尼2015年

198

noscript 块在禁用JavaScript时执行,通常用于显示您在JavaScript中生成的替代内容,例如

<script type="javascript">
    ... construction of ajaxy-link,  setting of "js-enabled" cookie flag, etc..
</script>
<noscript>
    <a href="next_page.php?nojs=1">Next Page</a>
</noscript>

没有js的用户将获得 next_page链接-您可以在此处添加参数,以便您在下一页上知道它们是否通过JS /非JS链接来来,还是试图通过JS设置cookie,而缺少JS则意味着是JS被禁用。这两个例子都相当简单,易于操作,但是您明白了。

如果您要纯粹统计一下您有多少用户禁用了javascript,可以执行以下操作:

<noscript>
    <img src="no_js.gif" alt="Javascript not enabled" />
</noscript>

然后检查您的访问日志以查看该图像被击中了多少次。稍微粗略的解决方案,但可以为您的用户群提供一个百分比的好主意。

上面的方法(图像跟踪)在纯文本浏览器或根本不支持js的浏览器中效果不佳,因此,如果您的用户群主要转向该领域,则可能不是最佳方法。


7
这不是很有效。例如,使用纯文本浏览器(通常不支持JavaScript)不会计算任何人。至少,您应该禁用该图像的缓存。
吉姆

3
根本不支持JS的浏览器会不会简单地忽略noscript标签并显示图像?
LKM

1
@LKM:取决于它们的书写方式,很可能取决于它们的书写方式,因此您可以将其设为1x1px点。该选项主要用于跟踪服务器端的使用模式,因此仍然可以,因为它是由没有JavaScript功能的用户触发的。
ConroyP

请注意,如果您设置样式,则当前存在IE8和noscript标记的错误……请参见positioniseverything.net/explorer.html
Alex

2
您也可以将该图像用作服务器端脚本,设置mime类型,并使用它记录有关用户的某些信息或删除cookie ... px.sklar.com/code.html/id=256
JKirchartz 2011年

46

这是对我有用的方法:如果禁用了javascript,它将重定向访客

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

6
这是无效的。noscript元素不能包含meta元素。我不相信此方法可在所有浏览器(包括您目前无法在其中测试的将来的浏览器)中可靠地工作,因为它们可能以不同的方式执行错误恢复。
昆汀2009年

15
这可能是无效的,但请看一下Facebook的代码,它在<head>部分使用了相同的解决方案-这并不意味着它是一个很好的解决方案,因为Facebook的代码与有效代码相去甚远,但是这可能意味着可在许多用户的浏览器上使用,这可能是一个重要方面。但是确实没有建议。这是他们的代码:<noscript> <meta http-equiv = refresh content =“ 0; URL = / about / messages /?_ fb_noscript = 1” /> </ noscript>
Sk8erPeter

IE9(至少)的设置为“允许META REFRESH”。我似乎没有很多人将其关闭,但大概是那些不喜欢javascript的人会关闭它,但是如果您要100%,那就不是这样。
jenson-button-event

在HTML5中有效。
纳斯塔

1
尝试在Linkedin上共享时,这破坏了链接,我们发现了很难的方法……这不是一个好主意。由于LinkedIn如下元刷新,无论噩标签等
SomeDudeSomewhere

44

如果您的用例是您拥有一个表单(例如,登录表单),并且服务器端脚本需要知道用户是否启用了JavaScript,则可以执行以下操作:

<form onsubmit="this.js_enabled.value=1;return true;">
    <input type="hidden" name="js_enabled" value="0">
    <input type="submit" value="go">
</form>

提交表单之前,这会将js_enabled的值更改为1。如果您的服务器端脚本得到0,则没有JS。如果得到1,JS!


44

我建议您通过编写不引人注目的JavaScript进行其他选择。

使项目功能对禁用了JavaScript的用户有效,完成后,实现JavaScript UI增强。

https://en.wikipedia.org/wiki/Unobtrusive_JavaScript


145
生命太短暂了。2012年-启用JavaScript或回家
Yarin

25
“生活太短了。现在是2012年-启用JavaScript或回家!” 在没有JS的情况下显示的完美小消息。登录只是为了告诉您@Yarin

5
我也刚刚登录说这太棒了!@雅琳 我正在制作一个小型站点,该站点通常不会公开(考虑像Intranet一样,但要让朋友们聚在一起从事项目工作)。我正在将其作为SPA,而不必费心进行后退。不打扰的JavaScript将使我投入SPA概念的工作量几乎翻倍。使用现代javascript库(例如Knockout,Jquery等),我们只需要承认并非每个站点都可以轻松地做到“不显眼”。Javascript是网络的未来。
lassombra

5
@Yarin我为谋生而构建PHP / JS应用程序,我从来没有放过后备...如果对某人不起作用,他们会与我联系,我告诉他们停止过去并启用JS。
山姆

2
@ n611x007-不道德的事情隐藏在每个设备的所有代码中,无论是服务器端还是客户端。它不是代码错误,是人为错误。我发现有一个针对JS的讽刺活动,因为您仍然使用第三方ISP来连接到互联网,仍使用带有第三方硬件/固件的计算机,仍使用可被第三方注入访问的不安全的蜂窝网络,还拥有使用该功能的手机第三方未打补丁的操作系统,仍在使用使用第三方广泛开放更新服务的平板电视等。无论您是否在浏览器中关闭JS,您始终是MITM渠道的受害者。
dhaupin

35

<noscript>甚至没有必要,更不用说XHTML不支持

工作示例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
    <title>My website</title>
    <style>
      #site {
          display: none;
      }
    </style>
    <script src="http://code.jquery.com/jquery-latest.min.js "></script>
    <script>
      $(document).ready(function() {
          $("#noJS").hide();
          $("#site").show();
      });
    </script>
</head>
<body>
    <div id="noJS">Please enable JavaScript...</div>
    <div id="site">JavaScript dependent content here...</div>
</body>
</html>

在此示例中,如果启用了JavaScript,那么您将看到该站点。如果不是,那么您会看到“请启用JavaScript”消息。测试是否启用JavaScript的最好方法就是尝试并使用JavaScript!如果有效,则启用,否则无效。


1
哈,XHTML。那段日子……事情发生了很大变化:developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript
Stephan Weinhold

为什么使用jquery ...
Luis Villavicencio

@ StephanWeinhold,JSF使用XHTML。
阿拉什

34

在主体上使用.no-js类,并基于.no-js父类创建非javascript样式。如果禁用了javascript,则将获得所有非javascript样式;如果有JS支持,则将替换.no-js类,从而照常提供所有样式。

 document.body.className = document.body.className.replace("no-js","js");

通过modernizr 在HTML5样板http://html5boilerplate.com/中使用的技巧,但您可以使用一行JavaScript来替换类

Noscript标记还可以,但是为什么可以使用CSS完成HTML中的多余内容


5
不敢相信花了这么长时间才有人提到这.nojs堂课!这是最无缝的方法之一,noscript令人遗憾。
摩西

15

有点难,但是(发际给了我这个主意)

CSS:

.pagecontainer {
  display: none;
}

JS:

function load() {
  document.getElementById('noscriptmsg').style.display = "none";
  document.getElementById('load').style.display = "block";
  /* rest of js*/
}

HTML:

<body onload="load();">

  <div class="pagecontainer" id="load">
    Page loading....
  </div>
  <div id="noscriptmsg">
    You don't have javascript enabled. Good luck with that.
  </div>

</body>

在任何情况下都行得通吗?即使noscript标记不受支持(仅需要一些CSS),任何人都知道一种非CSS解决方案吗?


13

您可以使用简单的JS代码段来设置隐藏字段的值。回发后,您知道是否启用了JS。

或者,您可以尝试打开一个快速关闭的弹出窗口(但是可能会看到)。

另外,您还有NOSCRIPT标记,可用于为禁用JS的浏览器显示文本。


这不是一个好答案。第一个解决方案需要重新加载页面和提交表单。第二种解决方案打开一个弹出窗口(ack!)并“快速”关闭它-从客户端?-1

有时,您需要了解服务器端是否已启用JS,因此除了发回某些内容外,我看不到如何做。同意弹出式窗口很丑陋,我不太确定,但是应该可以在屏幕可见区域之外打开弹出式窗口,这样用户就不会对此感到不安。没有优雅,但它可以正常工作,也没有页面重新加载。
rslite 2010年

垃圾邮件发布程序还会发布到隐藏字段。
Janis Veinbergs 2011年

13

您将要看一下noscript标记。

<script type="text/javascript">
...some javascript script to insert data...
</script>
<noscript>
   <p>Access the <a href="http://someplace.com/data">data.</a></p>
</noscript>

12

noscript标记效果很好,但由于本质上noscript是客户端检查,因此将需要每个附加的页面请求才能继续提供无用的JS文件。

您可以使用JS设置cookie,但是正如其他人指出的那样,这可能会失败。理想情况下,您希望能够检测JS客户端,并且不使用cookie,而是为该用户设置一个会话服务器端,以指示已启用JS。

一种可能性是使用JavaScript动态添加1x1图像,其中src属性实际上是服务器端脚本。该脚本所做的全部工作就是保存到启用了JS的当前用户会话中($ _SESSION ['js_enabled'])。然后,您可以将1x1的空白图像输出回浏览器。该脚本不会为禁用了JS的用户运行,因此不会设置$ _SESSION ['js_enabled']。然后,对于向该用户提供的其他页面,您可以决定是否包括所有外部JS文件,但是您总是希望包括该检查,因为某些用户可能正在使用NoScript Firefox附加组件或安装了JS因其他原因暂时停用。

您可能希望将此检查包括在页面末尾附近,以便其他HTTP请求不会减慢页面的呈现速度。


12

将此添加到每个页面的HEAD标签。

<noscript>
        <meta http-equiv="refresh" runat="server" id="mtaJSCheck" content="0;logon.aspx" />
</noscript>

所以你有了:

<head>
    <noscript>
        <meta http-equiv="refresh" runat="server" id="mtaJSCheck" content="0;logon.aspx" />
    </noscript>
</head>

感谢杰伊。


12

因为我总是想给浏览器一些值得一看的东西,所以我经常使用这个技巧:

首先,假设需要ISN没有javaScript,那么页面中需要JavaScript才能正常运行的任何部分(包括通过getElementById调用等进行修改的被动HTML元素)都可以按原样使用。(设计为似乎不存在)

任何需要JavaScript的元素,我都会在标签中放置以下内容:

<span name="jsOnly" style="display: none;"></span>

然后,在文档开始处,我使用.onloaddocument.ready在的循环内getElementsByName('jsOnly')设置.style.display = "";重新启用JS依赖元素。这样,非JS浏览器就不必看到站点的JS依赖部分,如果有,它会在准备就绪时立即显示。

一旦您习惯了这种方法,就可以很容易地将您的代码进行混合以处理这两种情况,尽管我现在只是在尝试使用noscript标签,并期望它会带来更多的优势。


10

这是“最干净”的解决方案ID用法:

<noscript>
    <style>
        body *{ /*hides all elements inside the body*/
            display: none;
        }
        h1{ /* even if this h1 is inside head tags it will be first hidden, so we have to display it again after all body elements are hidden*/
            display: block;
        }
    </style>
    <h1>JavaScript is not enabled, please check your browser settings.</h1>
</noscript>

9

常见的解决方案是将meta标记与noscript结合使用,以刷新页面并在禁用JavaScript时通知服务器,如下所示:

<!DOCTYPE html>
<html lang="en">
    <head>
        <noscript>
            <meta http-equiv="refresh" content="0; /?javascript=false">
        </noscript>
        <meta charset="UTF-8"/>
        <title></title>
    </head>
</html>

在上面的示例中,当禁用JavaScript时,浏览器将在0秒内重定向到网站的主页。另外,它还将参数javascript = false发送到服务器。

然后,服务器端脚本(例如node.js或PHP)可以解析该参数,并知道JavaScript已被禁用。然后,它可以将网站的特殊非JavaScript版本发送给客户端。


8

如果禁用了javascript,则无论如何客户端代码都不会运行,因此我假设您是说您希望该信息在服务器端可用。在这种情况下,noscript的帮助较小。取而代之的是,我将有一个隐藏的输入并使用javascript来填充一个值。在下一个请求或回发之后,如果该值在那里,则说明javascript已打开。

请注意noscript之类的东西,第一个请求可能显示为javascript禁用,但以后的请求会打开它。


5

例如,您可能使用诸如document.location ='java_page.html'之类的东西将浏览器重定向到一个新的,满载脚本的页面。重定向失败表示JavaScript不可用,在这种情况下,您可以诉诸CGI例程或在标记之间插入适当的代码。(注意:NOSCRIPT仅在Netscape Navigator 3.0及更高版本中可用。)

信用 http://www.intranetjournal.com/faqs/jsfaq/how12.html


4

我过去使用的一种技术是使用JavaScript编写会话cookie,该cookie只是充当表示启用JavaScript的标志。然后,服务器端代码将查找此cookie,如果找不到,则将采取相应措施。当然,该技术确实依赖于启用cookie!


4

我认为您可以在noscript标签中插入图片标签,然后查看统计信息,您的网站已经加载了多少次,以及该图片的加载频率。


4

人们已经发布了一些示例,这些示例是检测的不错选择,但是基于您的“警告警告,如果没有启用JS的浏览器,站点将无法正常运行”。您基本上会添加一个在页面上以某种方式显示的元素,例如,当您获得徽章时,在Stack Overflow上显示“弹出式窗口”,并显示一条适当的消息,然后使用一些Javascript将其删除,该Javascript会在页面加载后立即运行(我的意思是DOM,而不是整个页面)。


3

在什么地方检测到它?JavaScript?那是不可能的。如果仅出于记录目的而使用它,则可以使用某种跟踪方案,其中每个页面都有JavaScript,这些JavaScript会请求特殊资源(可能很小gif或类似)。这样,您就可以区分唯一页面请求和跟踪文件请求之间的区别。


3

为什么不放一个仅在启用JS时才触发的被劫持的onClick()事件处理程序,并使用该事件处理程序将参数(js = true)附加到单击/选择的URL(您还可以检测到一个下拉列表)并更改添加隐藏表单字段的值)。因此,现在服务器看到此参数(js = true)时,便知道已启用JS,然后在服务器端执行了高级逻辑。
不利的一面是,用户首次访问您的网站时,书签,URL,搜索引擎生成的URL –您将需要检测到这是新用户,因此不要寻找附加在URL上的NVP,并且服务器将必须等待下一次单击才能确定用户已启用/禁用了JS。另外,另一个缺点是该URL最终会出现在浏览器URL上,并且如果该用户随后将该URL加为书签,即使该用户未启用JS,它也会具有js = true NVP,尽管在下一次单击时,服务器会明智的做法是了解用户是否仍启用了JS。igh ..这很有趣...


3

为了强制用户启用JavaScript,我将每个链接的'href'属性设置为同一文档,该属性通知用户启用JavaScript或下载Firefox(如果他们不知道如何启用JavaScript)。我将实际的链接URL存储到链接的“名称”属性,并定义了一个全局onclick事件,该事件读取“名称”属性并在那里重定向页面。

这对我的用户群来说效果很好,尽管有点法西斯主义;)。


和有点烦人的是,如果用户确实启用了JS并在您的渐进式javascript启动之前单击了链接,那么……
Simon_Weaver

1
可以,但尚未报告任何问题。
扬·萨因

3

您不会检测到用户是否禁用了javascript(服务器端或客户端)。相反,您假定已禁用javascript,并在禁用javascript的情况下构建网页。这样就消除了对的需要noscript,您无论如何都应避免使用它,因为它工作不正确并且是不必要的。

例如,只要建立您的网站来说 <div id="nojs">This website doesn't work without JS</div>

然后,您的脚本将简单地执行document.getElementById('nojs').style.display = 'none';正常的JS业务。


这是一种很好的无缝方法,使用<noscript>标签很难在不同的页面上维护,这种方法可以通过css文件维护noscript样式。
zadubz 2013年

3

使用我在这里介绍的纯服务器端解决方案检查cookie,然后使用Jquery.Cookie删除cookie,以检查javascript,然后以这种方式检查cookie,同时检查cookie和javascript


3

在某些情况下,向后执行此操作就足够了。使用javascript添加一个类:

// Jquery
$('body').addClass('js-enabled');

/* CSS */
.menu-mobile {display:none;}
body.js-enabled .menu-mobile {display:block;}

这可能会在任何复杂的问题上造成维护问题,但这只是对某些问题的简单解决。与其尝试检测未加载的时间,不如根据加载的时间来设置样式。


3

我想添加我的解决方案,以获取关于禁用了javascript的实际用户访问我网站的可靠统计数据,占总数的百分比。每次检查仅执行一次此检查,具有以下好处:

  • 访问100页或仅访问1页的用户将被计为1。这样可以专注于单个用户,而不是页面。
  • 无论如何都不会破坏页面流,结构或语义
  • 可以记录用户代理。这样可以从统计数据中排除漫游器,例如通常禁用了JS的Google漫游器和Bing漫游器!还可以记录IP,时间等...
  • 每个会话一次检查(最小过载)

我的代码使用带有ajax的PHP,mysql和jquery,但可以适用于其他语言:

像这样在数据库中创建一个表:

CREATE TABLE IF NOT EXISTS `log_JS` (
  `logJS_id` int(11) NOT NULL AUTO_INCREMENT,
  `data_ins` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `session_id` varchar(50) NOT NULL,
  `JS_ON` tinyint(1) NOT NULL DEFAULT '0',
  `agent` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`logJS_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

使用session_start()或同等功能(需要jquery)后,将其添加到每个页面:

<?  if (!isset($_SESSION["JSTest"]))
    { 
        mysql_query("INSERT INTO log_JS (session_id, agent) VALUES ('" . mysql_real_escape_string(session_id()) . "', '" . mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']). "')"); 
        $_SESSION["JSTest"] = 1; // One time per session
        ?>
        <script type="text/javascript">
            $(document).ready(function() { $.get('JSOK.php'); });
        </script>
        <?
    }
?>

这样创建页面JSOK.php:

<?
include_once("[DB connection file].php");   
mysql_query("UPDATE log_JS SET JS_ON = 1 WHERE session_id = '" . mysql_real_escape_string(session_id()) . "'");

3

我想出了另一种使用CSS和JavaScript本身的方法。
这只是开始修改类和id。

CSS片段:
1.创建一个CSS ID规则,并将其命名为#jsDis。
2.使用“ content”属性在BODY元素之后生成文本。(您可以根据需要设置样式)。
3创建第二个CSS ID规则,并将其命名为#jsEn,并对其进行样式化。(为简单起见,我为#jsEn规则赋予了不同的背景色。

<style>
#jsDis:after {
    content:"Javascript is Disable. Please turn it ON!";
    font:bold 11px Verdana;
    color:#FF0000;
}

#jsEn {
    background-color:#dedede;
}

#jsEn:after {
    content:"Javascript is Enable. Well Done!";
    font:bold 11px Verdana;
    color:#333333;
}
</style>

JavaScript代码段:
1.创建一个函数。
2.使用getElementById获取BODY ID,并将其分配给变量。
3.使用JS函数“ setAttribute”,更改BODY元素的ID属性的值。

<script>
function jsOn() {
    var chgID = document.getElementById('jsDis');
    chgID.setAttribute('id', 'jsEn');
}
</script>

HTML部分。
1.使用ID #jsDis命名BODY元素属性。
2.添加带有函数名称的onLoad事件。(jsOn())。

<body id="jsDis" onLoad="jsOn()">

由于已为BODY标记指定了#jsDis的ID:
-如果启用了Javascript,它将自行更改BODY标记的属性。
-如果禁用了Javascript,它将显示CSS“内容:”规则文本。

您可以使用#wrapper容器,也可以使用任何使用JS的DIV。

希望这有助于理解。


2

在noscript中的meta中添加刷新不是一个好主意。

  1. 因为noscript标签不符合XHTML

  2. 属性值“ Refresh”是非标准的,不应使用。“刷新”使页面的控制权脱离用户。使用“刷新”会导致W3C的Web内容可访问性指南---参考http://www.w3schools.com/TAGS/att_meta_http_equiv.asp失败。


没有人谈论XHTML。<noscript>是完全有效的HTML 4.01严格标准。
汤姆

2
noscript在XHTML 1.0和XHTML 1.1中也完全有效。它不能包含元元素,应避免使用它来进行渐进式增强,但这是语言的一部分。
昆汀
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.