0

我和大多数开发者一样,想知道 js 什么时候被使用,什么时候没有被使用,并且相应地对网站的样式有所不同。

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

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

这是,还是这不是好的做法,如果不是,应该去哪里。请支持您的答案的来源!

考虑页面就绪速度、用户体验和 SEO。

4

2 回答 2

3

当您可以安装 no-js 样式表时,没有理由使用 no-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 来说没有任何意义。更不用说渲染 no-js 版本然后渲染 js 版本的成本,因为在渲染开始后删除了类。

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

如果您绝对坚持使用 javascript 执行此操作,我建议您在所述元素之后立即使用内联 javascript 执行此操作。

<body class="no-js">
<script>
    //document.body.className = "";
    document.body.classList.remove("no-js");
</script>
于 2013-08-12T14:16:06.483 回答
1

<head>是防止“无样式内容闪现”的最佳位置。甚至流行的Modernizr库也暗示了这一点

我们建议将 Modernizr 放在头部的原因有两个:HTML5 Shiv(在 IE 中启用 HTML5 元素)必须在<body>.防止FOUC。

于 2013-08-12T14:04:28.953 回答