我们不应该使用<noscript>元素吗?

我发现这里有一些很好的缺点:

  • noscript元素只检测浏览器是否启用了JavaScript。 如果JavaScript在防火墙而不是在浏览器中被禁用,那么JavaScript将不会运行,并且不会显示noscript元素的内容。

  • 许多脚本依赖于支持的语言的特定function或特性,以便能够运行(例如document.getElementById)。 在不支持所需function的情况下,JavaScript无法运行,但由于支持JavaScript本身,因此无法显示无脚本内容。

  • 使用noscript元素最有用的地方是在页面的头部,它可以有select地确定在页面加载时应用到页面的样式表和元素元素,而不必等到页面加载。 不幸的是,noscript元素只在页面的主体中有效,所以不能在头部使用。

  • noscript元素是块级元素,因此只能在禁用JavaScript时用于显示整个内容块。 它不能用于内联。

  • 理想情况下,网页应该使用HTML来表示内容,外观使用CSS,JavaScript使用行为。 使用noscript元素是从HTML内部应用行为,而不是从JavaScript应用。

资料来源: http : //javascript.about.com/od/reference/a/noscriptnomore.htm

我非常同意最后一点。 有没有办法制作和添加一个外部的<noscript>文件? 我们应该在<head>放置<noscript> <head>吗?

默认情况下最好是非JavaScript,然后让JavaScript代码覆盖一个JavaScript启用页面。 不必太多。 可以只是一个display:none; 块,然后设置为display:block; 通过javascript,反之亦然非js页面。

思考了好几天,来回改变了我的代码之后,我想我现在有了更清晰的画面,并且想在我忘记之前分享我的两分钱。

 <div id='noscript'>show non-js content</div> <script>document.getElementById('noscript').style.display='none';</script> <script id='required script'>show js content</script> 

VS

 <noscript>show non-js content</noscript> <script id='required script'>//show js content</script> 

根据情况,有三种情况需要考虑:

情况1 – 如果需要的脚本是内联的

禁用了JavaScript

  • <noscript>元素中的内容会立即显示,显示非js内容
  • <div>元素中的内容会立即显示,显示非js内容

启用JavaScript

  • <noscript>元素中的内容完全不会出现,显示js内容
  • <div>元素中的内容可能会暂时出现在被隐藏之前,显示js内容

对于这种情况,使用<noscript>元素是有利的。

情况2 – 如果需要脚本来自外部(第三方)源,但隐藏<div>元素是通过内联脚本完成的

禁用了JavaScript

  • <noscript>元素中的内容会立即显示,显示非js内容
  • <div>元素中的内容会立即显示,显示非js内容

已启用JavaScript,但所需的脚本被阻止

  • <noscript>元素中的内容完全不显示,没有任何内容显示!
  • <div>元素中的内容可能会在被隐藏之前暂时出现,没有任何显示!

收到JavaScript启用和必需的脚本

  • <noscript>元素中的内容完全不会出现,显示js内容
  • <div>元素中的内容可能会暂时出现在被隐藏之前,显示js内容

对于这种情况,使用<noscript>元素是有利的。

情况3 – 如果需要的脚本隐藏<div>元素

禁用了JavaScript

  • <noscript>元素中的内容会立即显示,显示非js内容
  • <div>元素中的内容会立即显示,显示非js内容

已启用JavaScript,但所需的脚本被阻止

  • <noscript>元素中的内容完全不显示,没有任何内容显示!
  • <div>元素中出现内容,显示非js内容

收到JavaScript启用和必需的脚本

  • <noscript>元素中的内容完全不会出现,显示js内容
  • <div>元素中的内容可能会暂时出现在被隐藏之前,显示js内容

对于这种情况,使用<div>元素是有利的。

综上所述

如果HTML内容的呈现取决于第三方脚本,或者所需的脚本是内联的,则使用<noscript>元素。 否则,使用<div>元素并确保所需的脚本包含:

 document.getElementById('noscript').style.display='none'; 

虽然Tor Valamo对这个问题有一个很好的答案,但是有一个问题可能会导致你select不使用这个技术。

问题是(通常)IE。 它具有加载和执行JS比其他浏览器慢一点的倾向,导致它有时会在加载JS和隐藏div之前闪烁“Please Enable Your Javascript”div。

这是烦人的,为了解决这个问题,你可以实现“经典”。 <noscript>redirect方法。

 <head> <noscript><meta http-equiv="refresh" content="0; URL=/NO_SCRIPT_URL/ROUTE_HERE"/></noscript> </head> 

这是我遇到的这个小小的讨厌的最坚实的技术。

一个非常有用的应用程序,我已经看到了一个逐渐增强的重载内容的asynchronous加载(尤其是“在折叠之下”)。 大的图像,iframe等可以包装在HTML源代码中,然后在DOM准备就绪后,可以使用JavaScript将展开的元素附加到页面上。 这可以解除对页面的阻止,并且可以提供更快的初始加载体验,特别是如果您的界面依赖于在文档准备就绪之后所应用的JS / JQ交互(对于我所咨询的投资组合页面,2秒对6秒)。

这几天,似乎几乎每个浏览器运行Javascript,但你永远不知道谁将访问您的网站。 如今,即使是屏幕阅读器和网页抓取工具也使用Javascript,有时甚至需要AJAX请求。

也就是说,如果你要回到没有Javascript,有一个比<noscript>标签更好的方法。 只需在文档的HEAD中执行此操作即可:

 <script type="text/javascript"> document.getElementsByTagName('html')[0].className += ' Q_js'; // better than noscript </script> 

有了这个技巧,你可以很容易地引用CSS中的Q_js类来隐藏事物。 使用<noscript>标签,您可以期望的最好的方法是包含一个额外的CSS文件来覆盖以前的CSS。 当一些具有静态内容的元素应该被马上隐藏起来(而不是闪烁),这一点就变得很重要,直到Javascript使它们更具dynamic性。

总之,我提出的技巧解决了所有的缺点1-5,我相信它比使用<noscript>更好。

简单的ideea是在这个时候你的网站可能适应没有JavaScript的使用缓慢的设备上使用noscript标签像一个实体为您的网站的整个内容**( 您的HTML应准备好没有JavaScript和所有的控制必须工作,如果JavaScript是closures的,使用基本的html控件的用户可以在javascript处于活动状态之前完成他们所做的一切。所以<noscript></noscript>可以以相同的结果dynamic切换到相同的内容=解决问题这是用户打开你的url的原因 )。**你可以看到无论javascript是否存在,在任何情况下js启用/禁用的网站function可以是“相同的”。在中国的慢速设备,如:三星neo迷你手机这种方法可以运行一个网站没有任何延迟低互联网stream量..试图运行这个自动双function所有网站,如果JS是开/关情况下:

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD> <TITLE>noscript can change the Internet forever</TITLE> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> <!-- $(document).ready(function(){ $('noscript').replaceWith(function() { return this.textContent || this.innerText; }); $("p#javascripton").css("background-color", "yellow"); $("p").click(function(){ $(this).hide(); }); }); //--> </SCRIPT> <noscript> <p> Noscript's usage today can be logical for <a href="http://google.com/"><p id="javascripton">eg pc/laptop/high quality tablets usage the complete website with all features:images high resolution,javascript<br><h1>OR without javascript so no high resolutions images inserted with a jquery automated script generated from some php+javascript scripts so have usage for 80% mobile application cause almost are from China ,so low quality products=low cpu,low ram :IN THIS CASE SOMEONE CAN THINK TO SWITCH HIS PHONE TO NO JAVASCRIPT USAGE SO IF ANY PROGRAMMER CAN ADAPT AN ENTIRELY APPLICATION TO THE METHOD I USED IN THIS EXAMPLE AUTOMATED HIS BROWSER IS ADAPT FOR ANY RANDOM ACTION ABOUT THE USER CHOISE(YOU UNDERSTAND "TO USE OR NOT JAVASCRIPT") SO HIS CHINESE PHONE CAN BE APROXIMATELLY APROACH LIKE QUALITY OF SPEED EXECUTION THE OTHERS PC/LAPTOPS/TABLETS QUALITY PRODUCTS.<BR><BR>This stupid example is the best example how no script tag can change the quality of services on this planet ,boost the speed of the internet connection and stops unnecessary use of A LOT OF INTERNET TRAFFIC on slow devices..a simple tag can change the entirely dynamic of programmer's views so entirely Planet's beneficts</h1><p></a> <br> run this code in two instances :<br>with browser javascript enable <br>and without(browser's javascript disable or eg a firefox plugin noscript states on/off) </p> </noscript> </BODY></HTML> 

并说更多的这个..正确的noscript被发明工作像一个触发器,当js被禁用,但你可以解决这个function,以改变互联网function的过程,现在是如何改变它的dynamic….

我创build了一个完整的高度,全宽度,位置:固定div在所有页面与一些id。

 <div id='noscript_div' style='position:fixed;z-index:20000000;height:100%;width:100%;line-height:100%;'>enable JS buddy</div> $('#noscript_div').hide(); $(document).ready(function(event){ }); 

我不是专家 。 这对我有效。 我很抱歉,但是,这种情况下,只适合如果你想让用户始终启用他的JavaScript

回答RAAJ谁添加了脚本

**

 <div id='noscript_div' style='position:fixed;z-index:20000000;height:100%;width:100%;line-height:100%;'>enable JS buddy</div> $('#noscript_div').hide(); $(document).ready(function(event){ }); 

**

信息学已经被发明来解决问题。 程序员正在解决问题,而不是问题的一部分。 想象一下Raj作为一个从未见过笔记本电脑的祖父从来没有出现在屏幕上,他缺lessJavaScript! 在一些国家,祖父母把他们的笔记本电脑扔出窗外!

用户界面=用户界面是为了用户友好的使用而发明的。 **我从来不同意这种做法,以避免在资源不足的情况下访问。**作为程序员,我的范围应该是尽可能less用资源来解决问题。这就是定义编码的质量! 出于这个原因,我把这个解决scheme写在这个顶部,出于同样的原因

 If {} Else {} 

看见你呀!

我build议你不要使用<noscript> ,你可以使用下面的代码:

 <HTML> <head> <script> window.location="some-page.php"; </script> </head> <body> <p> Please active JavaScript . </p> </body> </HTML> 

如果在任何情况下JS未启用,则将显示该消息,否则用户被redirect到目的地页面。