什么时候是从html标记中删除无js类的最佳时机

When is the best time to remove no-js classes from the html tag

本文关键字:js 时机 最佳 删除 html 什么时候      更新时间:2023-09-26

我和大多数开发人员一样,喜欢知道什么时候使用js,什么时候不使用js。

然后,我几乎立即在标题下使用它,试图在页面设置样式之前将类从标记中删除,而不是在jQuery就绪函数中使用,以防止页面跳转。

<script>var a=document.getElementsByTagName("html")[0];a.className&&(a.className=a.className.replace(/no-js's?/, ''));</script>

这是不是,或者这不是一个好的做法,如果不是,它应该去哪里。来源支持你的答案,请!

考虑页面准备速度、用户体验和SEO。

当您可以安装无js样式表时,没有理由使用无js类。

<link href="/css/styles.css" type="text/css" rel="stylesheet" />
<noscript>
    <link href="/css/nojs.css" type="text/css" rel="stylesheet" />
</noscript>

用javascript做这件事似乎有些不合时宜。您的javascript中会有一个任意行,它从一个元素中删除一个类,而这个类对所说的javascript来说毫无意义。更不用说渲染无js版本然后由于在渲染开始后删除类而渲染js版本的成本了。

使用无js样式表应该可以提高(即使只是稍微提高)网站js版本的性能,并让您可以自由移动和更改脚本,而不必担心它会影响无js类的删除,因为您的js不再与之有任何关系。

如果你绝对坚持用javascript来做这件事,我建议在上述元素之后立即用内联javascript来做。

<body class="no-js">
<script>
    //document.body.className = "";
    document.body.classList.remove("no-js");
</script>

<head>中是防止"未格式化内容闪烁"的最佳位置。甚至流行的Modernizr库也暗示了这一点:

我们建议将Modernizr放在头上的原因有两个:HTML5 Shiv(在IE中启用HTML5元素)必须在<body>之前执行,如果您正在使用Moderniz添加的任何CSS类,则需要防止FOUC。