Javascript 不应该';我们使用<;noscript>;元素?

Javascript 不应该';我们使用<;noscript>;元素?,javascript,xhtml,web-standards,noscript,Javascript,Xhtml,Web Standards,Noscript,我在这里发现了一些好的缺点: noscript元素仅检测浏览器是否启用了JavaScript。如果在防火墙中而不是浏览器中禁用了JavaScript,则JavaScript将不会运行,并且不会显示noscript元素的内容 许多脚本依赖于所支持语言的一个或多个特定功能才能运行(例如document.getElementById)。如果不支持所需的功能,JavaScript将无法运行,但由于支持JavaScript本身,因此不会显示noscript内容 使用noscript元素最有用的地方是在页

我在这里发现了一些好的缺点:

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

  • 许多脚本依赖于所支持语言的一个或多个特定功能才能运行(例如document.getElementById)。如果不支持所需的功能,JavaScript将无法运行,但由于支持JavaScript本身,因此不会显示noscript内容

  • 使用noscript元素最有用的地方是在页面的头部,它可以在页面加载时有选择地确定应用于页面的样式表和元元素,而不必等待页面加载。不幸的是,noscript元素仅在页面主体内有效,因此不能在头部使用

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

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

资料来源:


我非常同意最后一点。是否有方法创建和添加外部
文件?我们是否应该将
放在
中?

最好将默认值设置为非javascript,然后让javascript代码覆盖启用javascript的页面。不需要太多。只能是
显示:无块,然后设置为
显示:块由javascript编写,非js页面的代码>由javascript编写,反之亦然。

我建议您不要使用
,您可以使用以下代码:

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

window.location=“some page.php”;

请激活JavaScript。


如果在任何情况下未启用JS,将显示消息,否则用户将重定向到目标页面

虽然Tor Valamo对这个问题有一个优雅的答案,但有一个问题可能会导致您选择不使用此技术

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

这很烦人,为了避开这一点,你可以实现“经典”<代码>
重定向方法

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


这是我遇到的关于这个小问题的最可靠的技巧。

经过许多天的思考和反复修改代码,我想我现在有了更清晰的图景,在我忘记之前,我想分享一下我在这个问题上的两分钱价值

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

我看到的noscript的一个有用的应用程序是逐步增强的重内容异步加载(特别是“底层”)。大图像、iFrame等可以包装在HTML源代码中的noscript中,然后可以在DOM就绪后使用JavaScript将未包装的元素附加到页面中。这将解锁页面,并有助于获得更快的初始加载体验,特别是当您的界面依赖于文档准备就绪后应用的JS/JQ交互时(我查阅的公文包页面为2秒,而公文包页面为6秒)。

我在所有具有某个id的页面中创建一个全高、全宽、位置:固定div

<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){




});
启用JS好友
$('#noscript_div').hide();
$(文档).ready(函数(事件){
});
我不是专家。这对我有用。
我很抱歉,但是,只有当您希望用户始终启用javascript时,这种情况才会适用。现在,几乎所有浏览器都运行javascript,但您永远不知道谁将访问您的站点。现在甚至可以使用Javascript,如果有必要,有时还会发出AJAX请求

这就是说,如果您打算退回到没有Javascript的状态,那么有一种比
标记更好的方法。只需在文档的
标题中执行此操作:

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

document.getElementsByTagName('html')[0].className+='Q_js';//比noscript更好
使用此技术,您可以很容易地在CSS中引用
Q_js
类来隐藏内容。有了
标记,您最好希望包含一个额外的CSS文件来覆盖以前的CSS。当一些具有静态内容的元素应该立即隐藏(而不是闪烁)直到Javascript使它们更具动态性时,这一点就变得非常重要


简言之,我建议的技术解决了您所有的缺点1-5,我相信它比使用

好得多。简单的想法是,在这个时候,您的网站可能会适应在使用noscript标记的慢速设备上不使用javascript,就像整个网站内容的实体一样**(你的html应该准备好不使用javascript,所有控件也必须工作。如果javascript关闭,使用基本html控件的用户应该能够在javascript激活时完成之前所做的一切。因此,
可以以其他方式动态切换到相同的内容,并获得相同的结果=解决问题的原因是什么在用户打开你的url时
).*你可以看到,无论javascript是否存在,该网站的功能在任何情况下都是“相同”的js启用/禁用。在中文慢速设备上,例如三星neo mini phone,这种方法可以在低互联网流量下无延迟地运行网站。。 如果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可以永远改变互联网

Noscript现在的使用可以
<script type="text/javascript">
    document.getElementsByTagName('html')[0].className += ' Q_js'; // better than noscript
</script>
    <!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>
@media (scripting: none) {
    /* styles for when JS is disabled */
}