5

可能重复:如果未启用 javascript,则
使用 noscript 嵌入额外样式定义 css

只有在关闭 Javascript 时,我才尝试定义特定的 CSS 样式。我在用:

<noscript>
    <style type="text/css">
    .needjs {display:none !important;}
    .mwnojs { margin-top: 40px !important; }
    </style>
</noscript>

尝试验证页面源时,我收到错误“在此上下文中不允许元素样式作为元素 noscript 的子元素”。

那么,我将如何在保持标记有效的同时执行此操作?

4

5 回答 5

3

<noscript>标签是“body”标签,<style>标签是“head”标签。因此你会得到一个错误。

您应该将非 javascript 样式设为默认值,然后使用 js 更改您的样式。有关更多详细信息,请参见此处: https ://stackoverflow.com/a/218917/1068167

于 2012-12-19T21:52:22.210 回答
1

似乎与这个问题非常相似

“澄清验证问题:noscript 只允许在 body 元素中,style 只允许在 head。因此,后者不允许在前者中。”

您的<noscript>标签所在的位置可能很重要。

于 2012-12-19T21:52:52.850 回答
0

尝试这样的事情:

<html class="nojs">
<head>
<script type="text/javascript">
document.getElementByTagName("html")[0].className="";
</script>
<style>
html#nojs {
   /* do something */
}
</style>

这会在加载页面时删除一个类。如果未激活 javascript,则不会删除该类。

于 2012-12-19T21:51:57.390 回答
0

您可以通过在默认样式表中包含这些类并在页面加载时让 JavaScript 删除它们来解决这个问题。这仅在启用 JavaScript 时才有效,否则它将加载所需的样式。

于 2012-12-19T21:52:19.353 回答
0

例如,您可以以相反的方式执行此操作,并通过 javascript 禁用某些 css 文件,如果未激活,则不会发生这种情况。

于 2012-12-19T21:53:23.973 回答